SQL Server中的一个查询中有两个计数

时间:2018-10-17 13:59:48

标签: 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

1 个答案:

答案 0 :(得分:0)

在两个表之间的optout上写一个FULL OUTER JOIN,并在每个表中输入COUNT DISTINCT PK值以获取两个计数。