首页 > 解决方案 > 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

标签: sqlsql-server

解决方案


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


推荐阅读