Sql按两个字段分组
我有两个表Sql按两个字段分组,sql,pivot,Sql,Pivot,我有两个表客户和客户状态入口: CustomerStatusEntries --------------------------- Id | Branch | CustomerStatus_Value | Customer_Id CustomerStatus_Value = ("B" = "Block" , "E" = "Created" etc...) 我需要得到这个输出 SELECT Branch AS 'Branch Code', SUM(CASE WHEN Customer
客户
和客户状态入口
:
CustomerStatusEntries
---------------------------
Id | Branch | CustomerStatus_Value | Customer_Id
CustomerStatus_Value = ("B" = "Block" , "E" = "Created" etc...)
我需要得到这个输出
SELECT Branch AS 'Branch Code',
SUM(CASE WHEN CustomerStatus_Value = 'E' THEN 1 ELSE 0 END) AS 'Created',
SUM(CASE WHEN CustomerStatus_Value = 'A' THEN 1 ELSE 0 END) AS 'Active',
SUM(CASE WHEN CustomerStatus_Value = 'B' THEN 1 ELSE 0 END) AS 'Blocked',
SUM(CASE WHEN CustomerStatus_Value = 'C' THEN 1 ELSE 0 END) AS 'Cancelled',
COUNT(CustomerStatus_Value) AS 'All'
FROM CustomerStatusEntries
GROUP BY Id
假设示例中显示的列数固定,可以执行以下操作:
SELECT Branch,
SUM(CASE WHEN CustomerStatus_Value = 'E' THEN 1 ELSE 0 END) AS Created,
SUM(CASE WHEN CustomerStatus_Value = 'A' THEN 1 ELSE 0 END) AS Active,
SUM(CASE WHEN CustomerStatus_Value = 'B' THEN 1 ELSE 0 END) AS Blocked,
SUM(CASE WHEN CustomerStatus_Value = 'C' THEN 1 ELSE 0 END) AS Cancelled,
COUNT(*) AS All
FROM CustomerStatusEntries
GROUP BY Branch;
假设示例中显示的列数是固定的,则可以执行以下操作:
SELECT Branch,
SUM(CASE WHEN CustomerStatus_Value = 'E' THEN 1 ELSE 0 END) AS Created,
SUM(CASE WHEN CustomerStatus_Value = 'A' THEN 1 ELSE 0 END) AS Active,
SUM(CASE WHEN CustomerStatus_Value = 'B' THEN 1 ELSE 0 END) AS Blocked,
SUM(CASE WHEN CustomerStatus_Value = 'C' THEN 1 ELSE 0 END) AS Cancelled,
COUNT(*) AS All
FROM CustomerStatusEntries
GROUP BY Branch;
您可以使用标准SQL执行此操作:
select branch_code,
sum(case when CustomerStatus_Value = 'E' then 1 else 0 end) as Created,
sum(case when CustomerStatus_Value = 'B' then 1 else 0 end) as Blocked,
...
from t
group by branch_code
order by 1
您可以使用标准SQL执行此操作:
select branch_code,
sum(case when CustomerStatus_Value = 'E' then 1 else 0 end) as Created,
sum(case when CustomerStatus_Value = 'B' then 1 else 0 end) as Blocked,
...
from t
group by branch_code
order by 1
什么是RDBMS?请发布表格结构和示例数据,这将有助于获得一些答案,而不是你需要的大量-1。如果你透露你使用的是哪种SQL,有人可能会告诉你如何使用。或者你可以使用SQL Server搜索。我已说明用户需要帮助我的字段。。。我认为可以很容易地得出这样的结论:customer表有一个id,它是主键,是RDBMS吗?请发布表格结构和示例数据,这将有助于获得一些答案,而不是你需要的大量-1。如果你透露你使用的是哪种SQL,有人可能会告诉你如何使用。或者你可以使用SQL Server搜索。我已说明用户需要帮助我的字段。。。我认为可以很容易地得出这样的结论:customer表有一个id,它是主键…+1,但仍然缺少
Total
行,而且似乎id
不存在,Branch
别名是Branch code
+1,但仍然缺少Total
行,此外,还可以看到Id
不存在,而分支机构
别名为分支机构代码
。