【发布时间】:2011-05-18 13:51:15
【问题描述】:
我有以下功能:-
ALTER FUNCTION fncTest ()
RETURNS TABLE
AS
RETURN
(SELECT *
FROM (SELECT TOP 100 PERCENT sOrderType,
SUM(iQty) AS iOrdQty,
( YEAR(dReqd) * 100 ) + DATEPART(Week, dReqd) AS iWkNo
FROM tblOrderBook
GROUP BY sOrderType,
dOrdered) AS tblTemp PIVOT(SUM(Qty) FOR iWkNo IN
([201118], [201119], [201120], [201121], [201122])) AS pvtTemp)
这给了我一个显示 2011 年第 18-22 周订单数量的透视表。
是否可以用基于 GETDATE() 的动态日期替换硬编码的周数。
ie:
- 将
[201118]替换为(YEAR(GETDATE()+7)*100)+DATEPART(week,GETDATE()+7) - 将
[200119]替换为(YEAR(GETDATE()+14)*100)+DATEPART(week,GETDATE()+14) - 将
[200120]替换为(YEAR(GETDATE()+21)*100)+DATEPART(week,GETDATE()+21)
等等……
谢谢。
【问题讨论】:
标签: sql sql-server pivot