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

标签 sql sql-server sql-server-2008

表 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 Fiddle Demo

关于SQL 查询 - 从两个表中获取两列的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18466629/

相关文章:

sql-server - SQL Server 2012 row_number ASC DESC 性能

sql - 如何在存储过程的t-sql动态语句中使用LIKE?

sql - 在任何表的中间插入数据

c# - USQL 查询从 Json 数据创建表

sql-server - SQL - 从excel文件中选择的数据

sql-server - 有没有一种优雅的方法来跟踪 SQL Server 2008 中一个表的所有列的修改

c# - 从字符串转换日期和/或时间时转换失败

mysql - 使用从计算另一个表中提取的值更新 mysql 行

sql - 写数据流到postgresql

sql-server - 如何在 SQL Server 2008 中将多行连接成一个字符串?