2011-08-27 111 views
1

这里对网站和SQL查询一般都不熟悉,所以请原谅这里的noobness。我希望创建一个返回3列(从单个表)的SQL查询:多列/从哪里查询SQL查询

  1. 另类 “Region__C”
  2. “ID” 去哪儿 “ACTIVE__C” 是 “Y”
  3. 计数的计数“ID”的地方其中“ACTIVE__C”是“N”

下面是查询将执行#1和#2或#3。只是不知道如何接近创造相同的查询都列#2,#3:

SELECT DISTINCT SCHEMA.CONTACT.REGION__C AS "Region",COUNT(SCHEMA.CONTACT.ID) AS "Active Contacts" 
FROM SCHEMA.CONTACT 
WHERE SCHEMA.CONTACT.ACTIVE__C = 'Y' AND SCHEMA.CONTACT.REGION__C != 'Unknown' 
GROUP BY SCHEMA.CONTACT.REGION__C 

预先感谢任何帮助,任何人都可以提供!

回答

2
SELECT SCHEMA.CONTACT.REGION__C , 
     COUNT(CASE WHEN SCHEMA.CONTACT.ACTIVE__C = 'Y' THEN 1 
       END) AS Y , 
     COUNT(CASE WHEN SCHEMA.CONTACT.ACTIVE__C = 'N' THEN 1 
       END) AS N 
FROM SCHEMA.CONTACT 
WHERE SCHEMA.CONTACT.ACTIVE__C IN ('N', 'Y') AND 
        SCHEMA.CONTACT.REGION__C != 'Unknown' 
GROUP BY SCHEMA.CONTACT.REGION__C 
2

我认为这将工作:

SELECT DISTINCT SCHEMA.CONTACT.REGION__C AS "Region", 
sum(case ACTIVE__C when 'Y' then 1 else 0 end) as "CountActive", 
sum(case ACTIVE__C when 'N' then 1 else 0 end) as "CountInactive", 
COUNT(SCHEMA.CONTACT.ID) AS "Active Contacts" 
FROM SCHEMA.CONTACT 
WHERE SCHEMA.CONTACT.REGION__C != 'Unknown' 
GROUP BY SCHEMA.CONTACT.REGION__C