我有以下SQL查詢,顯示給定日期的12個月摘要報告。輸出顯示從1月到12月,無論給定日期。
我想要結果從給定日期的月份開始。從給定月份開始的SQL年總結
如果日期是'2016-05-01'
我想要的輸出是這樣
May 16 |June 16| July 16| ........... | Jan 17 | Feb 17 | March 17 | April 17 |
我怎樣才能做到這一點?
有人可以建議嗎?
SELECT Name,SUM(Amount) AS PremiumTot,TotType,
sum(case when month(Dates) = 1 then Tot else 0 end) Jan,
sum(case when month(Dates) = 2 then Tot else 0 end) Feb,
sum(case when month(Dates) = 3 then Tot else 0 end) March,
sum(case when month(Dates) = 4 then Tot else 0 end) April,
sum(case when month(Dates) = 5 then Tot else 0 end) May,
sum(case when month(Dates) = 6 then Tot else 0 end) June,
sum(case when month(Dates) = 7 then Tot else 0 end) July,
sum(case when month(Dates) = 8 then Tot else 0 end) Aug,
sum(case when month(Dates) = 9 then Tot else 0 end) Sep,
sum(case when month(Dates) = 10 then Tot else 0 end) Oct,
sum(case when month(Dates) = 11 then Tot else 0 end) Nov,
sum(case when month(Dates) = 12 then Tot else 0 end) Dece
FROM
(
SELECT InvoiceMasterID,Dates ,Name,CompanyCommission AS Tot ,0 AS Expences,Amount,1 as TotType
FROM CommissionView
UNION ALL
SELECT InvoiceMasterID,Dates,Name, 0 AS Tot ,-AgentCommission AS Expences,Amount,2 as TotType
FROM CommissionViewCredit
) a
WHERE Dates between @fromDates AND Datesadd(yy,1,@fromDates)
GROUP BY Name,TotType
要即時重新排序列,您需要使用動態sql並構建sql語句,然後執行它。如果你這樣做,我也可以建議看看PIVOT,因爲那樣你就只需要重新排列最後的列。 – Matt