これは私の前の質問の続きですが、単純化しようとしたため、何かを見逃しているようですcte loop を使用した Daily snapshot table
日付と従業員テーブルの間に以下のクロス結合を設定しようとしています。部門と部門に応じた毎日のカウントが必要ですが、日付はvarcharとして保存されているため、日付が簡単にリンクされません(私の選択ではありません。変更できません)。
テーブルにリンクできる style112 (yyyymmdd) キーを含む日付テーブルができましたが、結合のどこかでエラーが発生しているようです。
私はとても近くにいますが、本当に迷っています!私は文字列の日付を扱う必要がなかったので、誰にもそれを望んでいません.
DECLARE @DATESTART AS Date = '20180928';
DECLARE @DATEEND AS Date = '20181031';
WITH Dates AS (
SELECT @DATESTART AS Dte
UNION ALL
SELECT DTE + 1
FROM Dates
WHERE Dte <= @DATEEND )
SELECT
Dt.Dte
,CAST(DTC.Style112 AS VARCHAR)
,Emp.Division_Description
,Emp.Department_Description
,(SELECT
COUNT(*)
FROM ASS_D_EmpMaster_Live E
WHERE
E.[Start_Date] <= CAST(DTC.Style112 AS VARCHAR)
AND (E.Leaving_Date > CAST(DTC.Style112 AS VARCHAR)
OR E.Leaving_Date = '00000000')
) Counts
FROM Dates Dt
LEFT JOIN ASS_C_DateConversions DTC
ON DTC.[Date] = Dt.DtE
CROSS JOIN
(
SELECT DISTINCT
Division_Description
,Department_Description
FROM
ASS_D_EmpMaster_Live e
) Emp
OPTION (MAXRECURSION 1000)
希望する出力:
Date Dept1 Dept2 Dept3
20180901 25 231 154
20180902 23 232 154