開いているチケット/クローズドチケットのグループをすべて日付でカウントしようとしています。いくつかの日付は両方の値が0になりますが、私はまだ日付を表示したいと思います。私は近くにいるように感じますが、グループ化が正しく行われていないように見えます。SQL複数のサブクエリを結合する - 日付でオープン/クローズする
DECLARE @DateFrom AS DATE = '11/16/2016'
DECLARE @DateTo AS DATE = GETDATE()
WITH DateRanges AS
(SELECT @DateFrom AS 'DateValue'
UNION ALL
SELECT DATEADD(DAY, 1, DateValue)
FROM DateRanges
WHERE DateValue < @DateTo)
SELECT CONVERT(varchar(10),DateValue, 101) AS "DateVal",
(SELECT
COUNT(OPENDATE)
FROM DateRanges AS a
LEFT OUTER JOIN MAINTABLE
ON a.DateValue = convert(varchar(10), DATEADD(hh, DATEDIFF(HH, GetUTCDATE(), GETDATE()), OPENDATE), 101)
) AS opn,
(SELECT
COUNT(CLOSEDDATE)
FROM DateRanges AS b
LEFT OUTER JOIN MAINTABLE
ON b.DateValue = convert(varchar(10), DATEADD(hh, DATEDIFF(HH, GetUTCDATE(), GETDATE()), CLOSEDDATE), 101)
) AS cls
FROM DateRanges
GROUP BY CONVERT(varchar(10),DateValue, 101)
これは、次のように生成します。
DateVal | opn | cls
11/16/2016 | 3 | 3
11/17/2016 | 3 | 3
11/18/2016 | 3 | 3
MainTable
ID | OPENDATE | CLOSEDDATE
123 | 11/16/2016 | 11/16/2016
124 | 11/16/2016 | 11/18/2016
125 | 11/18/2016 | 11/18/2016
予想される出力
DateVal | opn | cls
11/16/2016 | 2 | 1
11/17/2016 | 0 | 0
11/18/2016 | 1 | 2
はあなたの助け
いただきありがとうございます3210
'MAINTABLE'のスキーマは何ですか? –
MAINTABLEには、OPENDATE、CLOSEDDATE、IDがあります。次のようになります。 ID | OPENDATE |閉鎖日 123 | | 11/16/2016 | 11/18/2016 – Nick
NickあなたがMainTableにサンプルデータを表示し、期待される出力が表示された場合、私たちはもっと役立つでしょう。あなたの期待される結果は?あなたはこれまでに何が得られているかを見ることができますが、許容できる出力のために見たいものは誰も知っていません。ありがとう –