我有以下功能: -
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)
等...
感谢。
答案 0 :(得分:5)
不是你想要的。执行此操作的唯一方法是动态SQL,您不能在函数中使用动态SQL。
但您可以使用固定列名称(例如[1],[2],[3]
等)来表示相对于当前日期的周数。