多个查询到1个查询进行计数

时间:2015-05-20 18:23:45

标签: sql sql-server-2012 union

好的,试着让它变得有意义,看看我是否可以做到这一点。我有多个查询存储在SQL Server 2012中,我可以单独运行以获得实际结果。这些查询中的每一个都连接到多个表。我想要做的是将所有这些查询放在一个查询中,以便在一个主列表中获取计数。

所以举个例子。我有一个查询,查找没有电子邮件地址的所有记录。下一个查询将查找缺少设置字段中电话号码的所有记录。下一个查询查找缺少填充字段的记录。

每个查询都会返回结果,我可以一次运行一个。我想设置一个我可以运行的单个查询,以便在单个结果列表中对每个查询进行计数。

我开始做一个Union语句并将两个查询代码放入其中。结果如下:

NoEmail   NoPhone
NULL      24486
74596     NULL

我希望这样看是这样的:

NoEmail     NoPhone
74596       24486

关于如何做到这一点的任何想法?

我希望这是足够的信息,如果没有,请告诉我,我会让你更多。

感谢。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

设置(仅用于演示目的,因此您可以看到我正在使用的数据):

create table t1 (
  id numeric,
  email varchar(20)
);

insert into t1 values (1,'test@example.com');
insert into t1 (id) values (2);
insert into t1 (id) values (3);

create table t2 (
  id numeric,
  phone varchar(20)
);

insert into t2 values (1,'123-456-7890');
insert into t2 (id) values (2);
insert into t2 (id) values (3);
insert into t2 (id) values (4);
insert into t2 (id) values (5);

查询:

select 
(select count(id) from t1 where email is null) as NoEmail,
(select count(id) from t2 where phone is null) as NoPhone;

结果:

NoEmail NoPhone
2       4

您可以根据需要在查询末尾添加任意数量的其他查询:

select 
(select count(id) from t1 where email is null) as NoEmail,
(select count(id) from t2 where phone is null) as NoPhone,
(select ...) as anotherCol,
(select ...) as yetAnotherCol;