[ad_1]
こんにちは、みんな 、
すべての月と各月の対応する値を選択するクエリがあります。 日付列に基づいて月順に並べ替えたいと考えています。 誰か助けてくれませんか。 さまざまな方法を試しましたが、解決策が見つかりませんでした。 ご協力をよろしくお願いいたします。
例えば :
現在の私の出力:
退職 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
年間 0 0 2 2 2 0 0 0 0 0 0 0
病気 0 0 2 2 2 0 0 0 0 0 0 0
私が望んでいた出力:
退職 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 1月 2月
年間 2 2 2 0 0 0 0 0 0 0 0 0
病気 2 2 2 2 2 0 0 0 0 0 0 0
つまり、月列の順序はサブクエリの mte.CalendarDate に基づく必要があります。
私が試したこと:
SELECT Leave, ISNULL([1], 0) AS January, ISNULL([2], 0) AS February, ISNULL([3], 0) AS March, ISNULL([4], 0) AS April, ISNULL([5], 0) AS May, ISNULL([6], 0) AS June, ISNULL([7], 0) AS July, ISNULL([8], 0) AS August, ISNULL([9], 0) AS September, ISNULL([10], 0) AS October, ISNULL([11], 0) AS November, ISNULL([12], 0) AS December FROM ( SELECT --YEAR(mte.CalendarDate) AS Years, MONTH(mte.CalendarDate) AS Months, --DATENAME(month, mte.CalendarDate) AS Calmonth, FLOOR(SUM(mte.LeaveDays))AS leaveCount ,mte.LeaveTypeID ,mtl.Leave FROM MST_TBL_Emp_Leaves mte LEFT JOIN PPMS_TBL_EmployeeMaster em ON em.Autoid = mte.EmpId LEFT JOIN MST_TBL_Leave_Types mtl ON mtl.Autoid = mte.LeaveTypeID WHERE mte.LeaveTypeID IN (1, 2, 4, 8) AND mte.EmpId = 170 AND mte.CalendarDate BETWEEN '2023-02-27' AND GETDATE() GROUP BY --YEAR(mte.CalendarDate), MONTH(mte.CalendarDate) ,mte.LeaveTypeID ,mtl.Leave ) AS source PIVOT ( SUM(leaveCount) FOR Months IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]) ) AS pivotedTable
[ad_2]
コメント