Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL查询中返回count和not count?_Sql_Oracle_Select - Fatal编程技术网

如何在SQL查询中返回count和not count?

如何在SQL查询中返回count和not count?,sql,oracle,select,Sql,Oracle,Select,如果我有桌子 AgentID | IsNew | TeamID 1 N 1 2 Y 2 3 Y 2 4 N 2 5 Y 1 我想从查询中返回以下内容: Team | CountIsNew = N | CountIsNew = Y 1 1 1 2 1 2 我有办法做到这一点吗?

如果我有桌子

AgentID | IsNew | TeamID
1         N       1
2         Y       2
3         Y       2
4         N       2
5         Y       1
我想从查询中返回以下内容:

Team | CountIsNew = N | CountIsNew = Y
1      1                1
2      1                2
我有办法做到这一点吗?

使用Oracle 10还有另一种方法-COUNT不计算空值(除了
COUNT(*)
):

SELECT  team, SUM(DECODE(IsNew, 'N', 1, 0)), SUM(DECODE(IsNew, 'Y', 1, 0))
FROM    mytable
GROUP BY
        team
或者,如果您喜欢这种情况:

SELECT TeamId,
       COUNT(CASE IsNew WHEN 'N' THEN 1 END) CountIsNotNew,
       COUNT(CASE IsNew WHEN 'Y' THEN 1 END) CountIsNew
FROM Agent
GROUP BY TeamId;

(注意:“1”可以是任何文字值)

5/5-干杯。我去看看decode,看看它是怎么工作的@OMGPonies:对于这种分组查询,我更喜欢
解码
,因为它是
空的
感知的
DECODE(NULL,NULL,1,0)
返回
1
如果为NULL,则大小写为NULL,然后返回
0
。您可以将
NULL
替换为任何其他常规值。我说DECODE是oracle特有的,而Dirk的答案适用于任何数据库,这对吗?
SELECT TeamId,
       COUNT(DECODE(IsNew,'N',1)) CountIsNotNew,
       COUNT(DECODE(IsNew,'Y',1)) CountIsNew
FROM Agent
GROUP BY TeamId;
SELECT TeamId,
       COUNT(CASE IsNew WHEN 'N' THEN 1 END) CountIsNotNew,
       COUNT(CASE IsNew WHEN 'Y' THEN 1 END) CountIsNew
FROM Agent
GROUP BY TeamId;