Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 结合两种选择_Sql_Sql Server_Dml - Fatal编程技术网

Sql 结合两种选择

Sql 结合两种选择,sql,sql-server,dml,Sql,Sql Server,Dml,我有下表 试验 我需要得到以下结果,只得到A和B的NumFact数 预期结果 我编写了以下查询 我怎样才能只选择一个select and get Num?您只需按类型分组并正确过滤即可 SELECT type, COUNT(NumFact) AS Num FROM test WHERE type IN ('A','B') GROUP BY type; 这意味着将结果集分组到列type,并对每个组使用聚合函数COUNT(),但仅当type列值等于“A”或“B”时 这是非常基本的SQL。阅读更多信

我有下表

试验

我需要得到以下结果,只得到A和B的NumFact数

预期结果

我编写了以下查询


我怎样才能只选择一个select and get Num?

您只需按
类型分组并正确过滤即可

SELECT type, COUNT(NumFact) AS Num
FROM test
WHERE type IN ('A','B')
GROUP BY type;
这意味着将结果集分组到列
type
,并对每个组使用聚合函数
COUNT()
,但仅当
type
列值等于“A”或“B”时


这是非常基本的SQL。阅读更多信息。

使用
分组方式

查询1 查询2

或稍有不同的版本:

SELECT COUNT(NumFact) AS Num, Type
FROM test
GROUP BY Type
HAVING (Type = 'A') OR (Type = 'B')
--或--


拥有(类型='A')或(类型='B')
是一个坏主意为什么呢。。。根据我的经验:
输入('A','B')
输入(type='A')或(type='B')要好
我猜这可能更好的主要原因是,如果要使用动态过滤器,您可以在括号中再加一个SELECT子句。我不认为需要对此OP进行解释,因为他可以理解当他运行SELECT时,SELECT中没有什么复杂的内容
     -- select query 1 --
    Select (count NumFact  )as Num 
    from test 
    where type = 'A' 

     -- select query 2 --
    Select (count NumFact  )as Num 
    from test 
    where type = 'B' 
SELECT type, COUNT(NumFact) AS Num
FROM test
WHERE type IN ('A','B')
GROUP BY type;
SELECT COUNT(NumFact) AS Num,
type FROM test
WHERE type IN ('A','B')
GROUP BY type
SELECT COUNT(NumFact) AS Num,
type FROM test
WHERE type='A' OR type='B'
GROUP BY type;
SELECT COUNT(NumFact) AS Num, Type
FROM test
GROUP BY Type
HAVING (Type = 'A') OR (Type = 'B')
select 
   type,count(numfact) as num
from  test 
group by type 
order by type
select 
   type,count(numfact) as num 
from  test 
where type in('A','B')
group by type 
order by type