指定された日付から12ヶ月間のサマリーレポートを表示する次のSQLクエリがあります。 1月から12月にかけて、指定された日付の出力が表示されます。
結果は、指定された日付の月から開始します。指定された月から始まるSQL Yearのサマリー
指定された日付は、私は、出力がこの
May 16 |June 16| July 16| ........... | Jan 17 | Feb 17 | March 17 | April 17 |
どのように私はこれを達成することができますようになりたい'2016-05-01'
ある場合は?
いくつか提案できますか?
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