【发布时间】:2017-04-13 19:01:03
【问题描述】:
我有两张桌子:
emailLog 表:
email sendTime sourceTag
-------------------------------------------------------
yadda@aol.com 2016-11-17 09:14:37.213 WelcomeEmail
badda@aol.com 2016-11-16 09:14:37.213 WelcomeEmail
test@aol.com 2016-11-15 09:12:33.213 WelcomeEmail
注册表表:
email dateRegistered regSource
-------------------------------------------------------
yadda@aol.com 2016-11-17 09:14:37.213 WelcomeEmail
badda@aol.com 2016-11-16 09:14:37.213 WelcomeEmail
test@aol.com 2016-11-15 09:12:33.213 WelcomeEmail
我正在尝试进行组合查询,以显示在给定日期收到电子邮件的人的 COUNT() 与在给定日期注册的人的 COUNT()
我已经做到了:
SELECT
CONVERT(varchar(10), sendTime, 120) as date,
COUNT(*) as numberSent
FROM emailLog
WHERE sourceTag = 'WelcomeEmail'
AND
sendTime BETWEEN '20161110' and '20161120'
GROUP BY
CONVERT(varchar(10), sendTime, 120)
ORDER BY DATE ASC;
这给了我一个带有特定 sourceTag 的电子邮件列表,按日期分组:
DATE NUMBERSENT
2016-11-17 256
2016-11-18 136
2016-11-19 40
2016-11-20 118
2016-11-21 186
但我不知道如何将那个日期的注册总和与那个来源结合起来,比如:
DATE NUMBERSENT MEMBERSREGISTERED
2016-11-17 256 12
2016-11-18 136 24
2016-11-19 40 13
2016-11-20 118 2
2016-11-21 186 11
我曾尝试过类似...
SELECT
(SELECT count(*) from emailLog)
as emailLogResults,
(select count(*) from registrations)
as registrationResults
...
但在那之后我被困住了。非常感谢任何帮助
【问题讨论】:
-
我删除了不兼容的数据库标签。请标记您真正使用的数据库。
标签: sql sql-server-2008 join union