私は次の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は常に一歩先を行っているようです。このコードを実行すると、TOP(またはFOR XMLなど)も使用しない限り、CTEでORDER BYを使用できないことが示されます。TOPを使用すると、使用できないことが示されます。 DISTINCTを使用します。はい、T-SQLにはすべての答えがあります。
誰かが私の手首を単に切るよりも速いこの問題の解決策を考えることができますか?失血による死亡は驚くほど長引く可能性があることを理解しており、期限があります。
ご協力いただきありがとうございます。
デビッド