sql - 如何在 SQL 中获取特定列的分组输出,如下所示?

标签 sql sql-server

有一个包含两列的表和此查询:

select SupplierName, Acknowledge 
from tbPOValidation

返回此结果集:

SupplierName         Acknowledge
--------------------------------
SUPPLIER COMPANY        1
CANADA SUPPLIERS        0
MOTION INDUSTRIES       0
SUPPLIER COMPANY        1
CANADA SUPPLIERS        0
INDUSTRY CORP           1
CORP SUPPLIERS          1
JAMES SUPPLIERS         NULL
MOTION INDUSTRIES       NULL

我希望输出看起来像这样(ack 1 = 是,0 = 否,Null= Null)

SupplierName      YES   NO  NULL
--------------------------------
JAMES SUPPLIERS   0     0   1
INDUSTRY CORP     1     0   0
CANADA SUPPLIERS  0     2   0
MOTION INDUSTRIES 0     1   1
SUPPLIER COMPANY  2     0   0
CORP SUPPLIERS    1     0   0

我怎样才能得到这个?

最佳答案

下面的 SQL 会对您有所帮助。

SELECT SupplierName, 
    SUM(CASE WHEN Acknowledge = 1 THEN 1 ELSE 0 END) AS 'YES',
    SUM(CASE WHEN Acknowledge = 0 THEN 1 ELSE 0 END) AS 'NO',
    SUM(CASE WHEN Acknowledge IS NULL THEN 1 ELSE 0 END) AS 'NULL' 
FROM tbpovalidation
GROUP BY SupplierName

关于sql - 如何在 SQL 中获取特定列的分组输出,如下所示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45488691/

相关文章:

sql - 如何在 SQL Server 中更新具有多个组合行的行

java - 无法获取 SQL Server 连接对象

SQL 语句 ON v WHERE

PHP 连接 SQL Server 2008 - 如何使用 odbc_connect 设置 utf-8

sql - Android 无法将数据插入 Azure SQL,但可以插入数据

mysql - 如果存在且 LIMIT 1 的左外连接值,则选择该值,否则选择其他值

c# - 如何从 "for xml path"获取结果?

sql - 比较两个 SQL Server 数据库(架构和数据)的最佳工具是什么?

sql-server - 使用 Azure DevOps 部署数据库期间出现错误 "The DELETE statement conflicted with the REFERENCE constraint"

sql - 如何根据 SQL Server 中是否存在情况来选择行?