sql - SQL Server 一次查询中的两个计数
问题描述
我需要一些帮助才能从这两个查询中只查询一个:
SET @SQL = 'SELECT ' + CONVERT(VARCHAR, @listid) + ' AS listid, optout, COUNT(*) AS nbEmail, ''' + CONVERT(VARCHAR, @date, 120) + ''' AS date
FROM list_' + CONVERT(VARCHAR, @listid) + '.dbo.members (NOLOCK)
GROUP BY optout
SET @SQL2 = 'SELECT ' + CONVERT(VARCHAR, @listid) + ' AS listid, Optout, COUNT(*) AS nbSMS, ''' + CONVERT(VARCHAR, @date, 120) + ''' AS date
FROM list_' + CONVERT(VARCHAR, @listid) + '.dbo.sms_members (NOLOCK)
GROUP BY Optout
我需要的是每个计数的两列,而不是两个查询。'listid' 将是相同的,输出也和日期相同
非常感谢
编辑 :
我希望结果类似于:
listid | Optout | nbEmail | nbSMS | Date
-------+--------+---------+-------+----------
902 | 56 | 23 | 36 | 22/10/17
902 | 45 | 27 | 16 | 22/10/17
902 | 14 | 22 | 96 | 22/10/17
解决方案
optout
在两个表之间写入一个 FULL OUTER JOIN ,并从每个表中 COUNT DISTINCT PK 值以获得两个计数。