使用SQL的多个查询进行多个SQL计数
我需要做多次计数。我有6个专栏。大概是这样的:使用SQL的多个查询进行多个SQL计数,sql,sql-server,Sql,Sql Server,我需要做多次计数。我有6个专栏。大概是这样的: SELECT COUNT(C.ID) as 'Column 1', COUNT(C.ID) as 'Column 2', COUNT(C.ID) as 'Column 3', COUNT(C.ID) as 'Column 4', FROM CONTACT C 我需要能够使用不同的查询运行不同的计数,但不确定如何在一个结果中应用查询计数。您需要运行子查询,或者至少这是一种方式: SELECT ( SELECT COUNT(c.ID) FR
SELECT
COUNT(C.ID) as 'Column 1',
COUNT(C.ID) as 'Column 2',
COUNT(C.ID) as 'Column 3',
COUNT(C.ID) as 'Column 4',
FROM CONTACT C
我需要能够使用不同的查询运行不同的计数,但不确定如何在一个结果中应用查询计数。您需要运行子查询,或者至少这是一种方式:
SELECT
( SELECT COUNT(c.ID) FROM Contact c WHERE ... ) AS Column1,
( SELECT COUNT(c.ID) FROM Contact c WHERE ... ) AS Column2
如果我明白你想做什么,我通常会这样做:
SELECT
SUM(CASE WHEN Condition1 THEN 1 END) AS Column1,
SUM(CASE WHEN Condition2 THEN 1 END) AS Column2
FROM Contact
这里有几个选项 1) 将子查询用作@TheSpolution proposed 2) 使用联合
SELECT 'A' NAME, COUNT(c.ID) [COUNT] FROM Contact c WHERE ...
UNION
SELECT 'B' NAME, COUNT(c.ID) [COUNT] FROM Contact c WHERE ...
3) 如果它实际上是相同的子集,但您希望基于某些条件求和,那么在计数内使用case
SELECT sum(case ... when ... then 1 else 0 end) counta,
sum(case ... when ... then 1 else 0 end) countb
FROM ... WHERE ...
将varchar值“London”转换为数据类型int时,转换失败。
-我在使用UNION时得到此结果…子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。
@PriceCheaperton,您使用了什么WHERE
子句?