sql - 组合 COUNT 个查询

标签 sql sql-server count

我正在计算 SQL Server 表中的特定内容。我正在使用多个计数查询,但我想知道是否可以将它们组合成一个查询,并在单个表中显示列名和计数数字。

我的查询是:

select count(*) as Ask_Count
from Pld_OpenSalesOrdersLines
where left(C_Item_ID, 1) = '*'

select count(*) as M_Count
from Pld_OpenSalesOrdersLines
where (left(C_Item_ID, 1) = 'M' and len(C_Item_ID) = 1)

select count(*) as MN_Count
from Pld_OpenSalesOrdersLines
where (left(C_Item_ID, 2) = 'MN' and len(C_Item_ID) = 2)

我尝试了一些愚蠢的方法来将它们结合起来,但它们失败了。老实说,我什至无法开始思考如何将它们结合起来,也许这是不可能的?

谢谢!

最佳答案

您可以使用CASE表达式来执行条件聚合:

select 
 COUNT(CASE WHEN LEFT(C_Item_ID,1)='*' THEN 1 END) AS Ask_Count,
 COUNT(CASE WHEN LEFT(C_Item_ID,1)='M' AND LEN(C_Item_ID)=1 THEN 1 END)  M_Count,
 COUNT(CASE WHEN LEFT(C_Item_ID,2)='MN' AND LEN(C_Item_ID)=2 THEN 1 END) MN_Count 
from Pld_OpenSalesOrdersLines

关于sql - 组合 COUNT 个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53786185/

相关文章:

php - 使用sql和php按周获取数据

mysql - 超过锁等待超时;尝试重新启动事务 - 插入语句

java.sql.SQLException : [Microsoft][ODBC Driver Manager] Invalid cursor state 异常

sql-server - SQL Server 上存储过程的计划运行

sql-server - SQL Server : "MoSTLy-unique" index

mysql - SQL查询获取列中不重复的值

sql - 关于 1 :1 relationship 的困惑

sql-server - 使用 SSIS DerivedColumn 更改数据长度

Mysql查询文章相关评论数

javascript - Javascript 中计数器相同值的 3 倍