我需要做多个计数。我有大约6栏。事情是这样的:使用SQL使用多个查询的多个SQL计数
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
我需要能够运行使用不同的查询,但不能确定如何适用查询计数一个结果不同的计数。
我需要做多个计数。我有大约6栏。事情是这样的:使用SQL使用多个查询的多个SQL计数
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
我需要能够运行使用不同的查询,但不能确定如何适用查询计数一个结果不同的计数。
这里有几个选项。
1)使用子查询作为@TheSoultion提出
2)使用UNION使用
SELECT 'A' NAME, COUNT(c.ID) [COUNT] FROM Contact c WHERE ...
UNION
SELECT 'B' NAME, COUNT(c.ID) [COUNT] FROM Contact c WHERE ...
3)的情况下,它确实是同一个子集,但你要根据一定的条件来概括,用例然后在你的计数内
SELECT sum(case ... when ... then 1 else 0 end) counta,
sum(case ... when ... then 1 else 0 end) countb
FROM ... WHERE ...
您需要运行子查询,或者至少这是一个方法:
SELECT
(SELECT COUNT(c.ID) FROM Contact c WHERE ...) AS Column1,
(SELECT COUNT(c.ID) FROM Contact c WHERE ...) AS Column2
'子查询返回的值超过1。当子查询遵循=,!=,<, <= , >,> =或当子查询用作表达式时,这是不允许的。' – PriceCheaperton
@PriceCheaperton,以及您使用了哪个WHERE子句? –
如果我理解你想要做什么,我通常最终会做这种方式:
SELECT
SUM(CASE WHEN Condition1 THEN 1 END) AS Column1,
SUM(CASE WHEN Condition2 THEN 1 END) AS Column2
FROM Contact
'将varchar值'London'转换为数据类型int.'时发生转换失败 - 我在使用UNION时得到此... – PriceCheaperton
@PriceCheaperton显示您的确切查询。 – vittore