私はこのようになりますテーブルがあります。のSQL Server 2014グループ
CREATE TABLE dbo.Mails (
ID int IDENTITY(1, 1) NOT NULL,
Reference nvarchar(20) COLLATE Latin1_General_CI_AS NULL,
Email nvarchar(70) NOT NULL,
ETS datetime NULL, --Estimated Time of Shipping
ATS datetime NULL, --Actual Time of Shipping
ReadOn datetime NULL,
Unsubscribed datetime NULL,
Bounced datetime NULL,
BouncedReason nvarchar(30) COLLATE Latin1_General_CI_AS NULL,
Active bit DEFAULT 1 NULL
)
を私はチャート上の情報を表示する必要がある、と私は日によってグループにする必要があります。私は次のクエリを構築し、特定のキャンペーンのためReadOnフィールドによってグループの詳細にしたい場合は、したがって
Select
CAST(readOn as date) [date],
COUNT(*) [read]
FROM Mails m
WHERE [email protected]
GROUP BY CAST(readOn as date)
ORDER BY CAST(readOn as date) ASC
and I get something like this:
sDate read
NULL 360
2016-05-05 67
2016-05-06 123
2016-05-07 84
2016-05-08 62
2016-05-09 89
2016-05-10 17
2016-05-11 12
2016-05-12 8
2016-05-13 4
2016-05-14 4
しかし、私は、同じクエリでは、だけでなくReadOnフィールドを抽出したいと思いますが、他にもETSなどの分野では、ATS、未登録の/ EASIはあり未読&を読み、
をバウンスし、この
sDate read ETS ATS Bounced Unsub./Read Unsub/Unread
NULL 360
2016-05-05 67 830 570 27 7 3
2016-05-06 123 0 260 4 9 5
2016-05-07 84 0 0 0 2 2
2016-05-08 62 0 0 0 2 4
2016-05-09 89 0 0 0 7 1
2016-05-10 17 0 0 0 5 6
2016-05-11 12 0 0 0 8 2
2016-05-12 8 0 0 0 1 3
2016-05-13 4 0 0 0 0 2
2016-05-14 4 0 0 0 0 2
のような何かを得ます6つの異なるクエリを構築するよりも、
は、少なくとも次のパスを示すことができますか?
おかげ
ジョー
ETSなどのようにSUM(ReadDate = genericdate、1 else 0)の場合、SUM(ETSdate = genericdate、1 else else endの場合)の総計テーブルに結合します –
'dateadd(DAY、 0、datediff(day、0、m.ReadOn)) '?? –
最初に、グループ化として日付を使用し、その日付に該当するフィールドのカウントを取得する場合は、日付を格納するテーブルが必要です。 第2に、基本フィールド(日付)に関係しないバウンスを含めているので、あなたの質問は本当に意味をなさない。たとえば、日付に含まれる「バウンス」されたレコードの数はどのようにして決定されますか?その日に読まれたものなのでしょうか?そうであれば、他のフィールドにもそのロジックを含める必要があります。これは、ETSが読み込み日と一致した場合にのみカウントされることを意味します。 –