SQL查询 - 从两个表中获取两列的计数

Sab*_*abz 3 sql sql-server sql-server-2008

表格1:

TicketNumber    | Rules
---------------------------
PR123       | rule_123
PR123       | rule_234
PR123       | rule_456
PR999       | rule_abc
PR999       | rule_xyz
Run Code Online (Sandbox Code Playgroud)

表2:

TicketNumber    | Rules
---------------------------
PR123       | rule_123
PR123       | rule_234
PR999       | rule_abc
Run Code Online (Sandbox Code Playgroud)

注意:两个表具有相同的结构:相同的列名但不同的计数.

注意:两个表都具有相同的TicketNumber值集

情况1:如果我需要来自table1的每张票的票数和规则数,则查询为:

Select [TicketNo], COUNT([TicketNo]) AS Rules_Count from [Table1] group by TicketNo
Run Code Online (Sandbox Code Playgroud)

这将给我输出格式:

ticketNumber    | Rules_Count
---------------------------
PR123       | 3
PR999       | 9
Run Code Online (Sandbox Code Playgroud)

案例2 :(需要帮助)

现在,上一个查询获取票证和仅1个表的票证计数.我需要在table2中同一张票的计数(因为两者都有相同的tkt nos).

我需要这样的结果:

ticketNumber    | Count(ticketNumber) of table1 | Count(ticketNumber) of table2
---------------------------------------------------------------------------------
PR123       | 3                 | 2
PR999       | 2                 | 1
Run Code Online (Sandbox Code Playgroud)

Table1和table2都具有相同的票证组,但计数不同

如何获得如上所示的结果?

Fra*_*isi 7

从"陈述的角度"看更简单的解决方案(没有COALESCE它可能不那么容易理解).

注意表演:

Select T1.TicketNumber,T1.Rules_Count_1,T2.Rules_Count_2
FROM
(
  Select [TicketNumber], COUNT([TicketNumber]) AS Rules_Count_1 
  from [Table1] T1
  group by TicketNumber) T1
INNER JOIN
(
  Select [TicketNumber], COUNT([TicketNumber]) AS Rules_Count_2
  from [Table2] T2
  group by TicketNumber
 ) T2
on T1.TicketNumber = T2.TicketNumber
Run Code Online (Sandbox Code Playgroud)

SQL小提琴演示