表 1:
TicketNumber | Rules
---------------------------
PR123 | rule_123
PR123 | rule_234
PR123 | rule_456
PR999 | rule_abc
PR999 | rule_xyz
表2:
TicketNumber | Rules
---------------------------
PR123 | rule_123
PR123 | rule_234
PR999 | rule_abc
注意:两个表的结构相同:列名相同但计数不同。
注意:两个表具有相同的 TicketNumber 值集
案例 1: 如果我需要 table1 中每张票的票和规则计数,查询是:
Select [TicketNo], COUNT([TicketNo]) AS Rules_Count from [Table1] group by TicketNo
这将为我提供格式输出:
ticketNumber | Rules_Count
---------------------------
PR123 | 3
PR999 | 9
案例 2:(需要帮助)
现在,前面的查询只得到一张表的票和票数。我还需要在 table2 中计算同一张票的数量(因为两者都有相同的 tkt nos 集)。
我需要这样的结果:
ticketNumber | Count(ticketNumber) of table1 | Count(ticketNumber) of table2
---------------------------------------------------------------------------------
PR123 | 3 | 2
PR999 | 2 | 1
Table1 和 table2 的票号相同,但计数不同
我如何得到如上所示的结果?
最佳答案
从“语句的角度”来看一个更简单的解决方案(没有 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
关于SQL 查询 - 从两个表中获取两列的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18466629/