1
動的ピボットクエリから合計列を取得する際に問題があります。私はこの結果を得た私のコードから :ここ the result without total 、私は列32,33,34,35からの総列をしたいとカラム35(縦合計欄)の後に配置SQL動的ピボットから合計列を取得
は私のコードです:
SET DATEFIRST 1;
DECLARE @cols AS NVARCHAR(MAX),
@colNames AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SELECT @cols = STUFF((SELECT DISTINCT ',' + QUOTENAME(DATEPART(wk,OINV.TaxDate))
FROM OINV
WHERE YEAR(OINV.TaxDate) = 2016 AND MONTH(OINV.TaxDate) = 8
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
SELECT @colNames = STUFF((SELECT DISTINCT ', ISNULL(' + QUOTENAME(DATEPART(wk,OINV.TaxDate)) +', 0) as '+ QUOTENAME(DATEPART(wk,OINV.TaxDate))
FROM OINV
WHERE YEAR(OINV.TaxDate) = 2016 AND MONTH(OINV.TaxDate) = 8
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
SET @query = 'SELECT Salesman, Cabang, '+ @colNames +'
FROM(SELECT
OSLP.SlpName as Salesman,
OCRD.U_STEM_BP_WHSE as Cabang,
SUM(OINV.DocTotal) as Achiev,
DATEPART(wk,OINV.TaxDate) as WeekNo
FROM OINV
INNER JOIN INV1 ON INV1.DocEntry = OINV.DocEntry
INNER JOIN OSLP ON OINV.SlpCode = OSLP.SlpCode
INNER JOIN OITM ON INV1.ItemCode = OITM.ItemCode
INNER JOIN OMRC ON OITM.FirmCode = OMRC.FirmCode
INNER JOIN OCRD ON OINV.CardCode = OCRD.CardCode
WHERE
YEAR(OINV.TaxDate) = 2016 AND MONTH(OINV.TaxDate) = 8
GROUP BY
OSLP.SlpName,
OCRD.U_STEM_BP_WHSE,
OINV.TaxDate) AS a
PIVOT(SUM(Achiev)
FOR WeekNo IN (' + @cols + ')) AS pvt
ORDER BY Salesman ASC'
EXECUTE(@query);
ご協力いただきありがとうございます。 @Antonから
使用のアドバイス、私が得たこの更新された結果: the updated result
アドバイスをいただきありがとうございます。すでに私のコードにテストして、合計結果が表示されます。 1つの列に値があり、もう1つがNULLまたはゼロの場合、合計列はゼロに戻ります。私の質問でサンプルの結果が更新されました。 –
心配しないで、答えを「回答済み」とマークしてください。 – Anton
大丈夫ですが問題はありませんが、私の上記のコメントに関する問題についてもう一度お手伝いできますか? –