我希望这更具体一点?抱歉,如果我不清楚,有点新鲜。谢谢你的帮助!!
我试图让动态支点在CTE上工作。我看了一下,我有几个问题。对于我的命运,似乎以下帖子的内容对于动态sql来说是非常标准的:
Pivot Table and Concatenate Columns
我的表格中有以下列,包括交易:
日期|产品|时间|价格|卷|
我想获得当天每个季度的平均价格,所以我想在将其四舍五入到最接近的季度时间之后调整时间列。并取每个产品和日期的加权平均价格。
所以我使用一个CTE来创建数据透视表:
DECLARE @pivot_list as varchar(max)
;with startquarter(starttradequarter)
AS
(
SELECT cast(DATEadd(mi,(datediff(mi,0,Time))/15*15,0)as varchar)
from [table]
where date > '2014-04-15'
),
PIVOT_CODES(PIVOT_CODE)
AS
(
SELECT DISTINCT starttradequarter AS PIVOT_CODE
from startquarter
)
SELECT @pivot_list = COALESCE(@pivot_list + ',[' + PIVOT_CODE + ']','[' + PIVOT_CODE + ']')
FROM PIVOT_CODES
然后我想在表的一个轴中使用这个变量:
;With productselector(Date,startquarter,product,volume,price)
as
(
SELECT [Date]
,cast(DATEadd(mi,(datediff(mi,0,Time))/15*15,0)as varchar) as startquarter
,[product]
,[Volume]
,[Price]
FROM [table]
where DelDate = '2014-01-06' and product = 'x'
),
WAPricequarter(startquarter,date,sumvolume,WAPq,product)
AS
(
SELECT startquarter
,Date
,sum(volume) as sumvolume
,round(sum(volume*price)/sum(volume),2) as WAPq
,product
from productselector
group by date, startquarter, product
)
SELECT date, product, + @pivot_list
from WAPricequarter
PIVOT (
SUM([sumvolume])
FOR startquarter IN (@pivot_list)
) AS pvt
所以我在所有动态枢轴中看到第二个语句首先放入变量然后执行,这是必要的吗?
如果不是如何让枢轴工作在@pivot_list中的列上,它现在会出现错误的语法错误,我无法开始工作。
如果有必要将其放入变量然后执行,那么我怎么能在该变量中过滤产品或日期,因为我必须使用''在它周围。