gpt4 book ai didi

sql - 在SQL中透视日期参数以实现WOW增长

转载 作者:行者123 更新时间:2023-12-04 22:42:10 25 4
gpt4 key购买 nike

我正在尝试衡量并显示SSRS报告中每周的增长情况。

我正在尝试结合使用SQL中的数据透视函数和参数来轻松检索我在SQL中需要的数据,而不必在SSRS中添加过于复杂的公式和矩阵。

我尝试的公式是:

SELECT     category, COALESCE (sum([@wedate]), 0) AS currentweek, COALESCE (sum([@wedate-7]), 0) AS previousweek
FROM OfficeProduction
PIVOT (sum(amount) FOR wedate IN ([@wedate], [@wedate-7])) AS p
WHERE category = 'Revenue'
GROUP BY category


当我尝试将其另存为存储的proc时,会收到错误消息,以及将其直接插入SSRS的数据集框中时遇到的错误。

我已经测试了参数的插入值

SELECT     category, COALESCE (sum([7/7/12]), 0) AS currentweek, COALESCE (sum([6/30/12]), 0) AS previousweek

FROM OfficeProduction

PIVOT (sum(amount) FOR wedate IN ([7/7/12], [6/30/12])) AS p
WHERE category = 'Revenue'
GROUP BY category


而且我得到了适当的结果...所以我感觉很亲密,任何帮助将不胜感激。

最佳答案

听起来您将需要Dynamic SQL来传递参数并使用参数值执行最终语句。这是一个简短的快速脚本,应该可以运行:

create table t
(
id int,
wedate datetime,
amount int
)

insert into t values (1, '2012-07-07', 50)
insert into t values (2, '2012-06-30', 25)
insert into t values (3, '2012-07-07', 75)
insert into t values (4, '2012-06-30', 25)

DECLARE @wedate datetime
DECLARE @wedateP datetime
declare @sql varchar(max)

DECLARE @wedateCol varchar(10)
DECLARE @wedatePCol varchar(10)

set @wedate = '2012-07-07'
set @wedateP = DateAdd(d, -7, @wedate)

set @wedateCol = Convert(char(10), @wedate, 101)
set @wedatePCol = Convert(char(10), @wedateP, 101)

set @sql = 'select * FROM t
PIVOT
(
sum(amount)
for wedate in ([' + @wedateCol + '], [' + @wedatePCol +' ])
)p '

exec(@sql)

drop table t


它将在单独的参数中创建星期几之前的值,然后将其转换为PIVOT的文本值。

关于sql - 在SQL中透视日期参数以实现WOW增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11652276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com