我有以下 CTE。其目的是提供独特的月/年对。稍后的代码将使用 CTE 生成月/年对的串联字符串列表。
;WITH tblStoredWillsInPeriod AS
(
SELECT DISTINCT Kctc.GetMonthAndYearString(DateWillReceived) Month
FROM Kctc.StoredWills
WHERE DateWillReceived BETWEEN '2010/01/01' AND '2010/03/31'
ORDER BY DateWillReceived
)
我省略了 GetMonthAndYearString 函数的实现,因为它很简单。
编辑:按照马丁的要求,这里是周围的代码:
DECLARE @PivotColumnHeaders nvarchar(MAX)
--CTE declaration as above---
SELECT @PivotColumnHeaders =
COALESCE(
@PivotColumnHeaders + ',[' + Month + ']',
'[' + Month + ']'
)
FROM tblStoredWillsInPeriod
SELECT @PivotColumnHeaders
可悲的是,似乎 T-SQL 总是领先一步。当我运行此代码时,它告诉我不允许在 CTE 中使用 ORDER BY,除非我也使用 TOP(或 FOR XML,不管是什么)。如果我使用 TOP,它会告诉我不能使用它与不同。是的,T-SQL 有所有的答案。
谁能想到比简单地割腕更快的解决这个问题的方法?我知道失血导致的死亡可能会令人惊讶地挥之不去,而且我有最后期限要赶上。
谢谢你的帮助。
大卫