sql - sql子查询中的分组
问题描述
所以我有一个查询,我试图累积电话和网站的订单计数,但是我意识到当它直接在选择中时,你不能在子查询中使用 GROUP BY 子句,因为它返回多个值。因此我的问题是我在哪里放置子查询以达到相同的结果。
SELECT CAST(a.DateCreated AS DATE),
(SELECT count(CAST(DateCreated AS DATE))
FROM [Sterlingbuild].[dbo].[CustomerOrder]
WHERE BookingSourceId = 1
GROUP BY CAST(DateCreated AS DATE)) AS 'Website',
(SELECT count(CAST(DateCreated AS DATE))
FROM [Sterlingbuild].[dbo].[CustomerOrder]
WHERE BookingSourceId = 2
GROUP BY CAST(DateCreated AS DATE)) AS 'Phone'
, count(CAST(a.DateCreated AS DATE)) AS 'Total Orders'
FROM [Sterlingbuild].[dbo].[CustomerOrder] a
WHERE CustomerOrderStatusId = 7
AND DepartmentId = 1
GROUP BY CAST(a.DateCreated AS DATE)
ORDER BY CAST(a.DateCreated AS DATE)
当我运行此查询时,它可以工作,因此我知道数据是正确的:
SELECT count(CAST(DateCreated AS DATE))
FROM [Sterlingbuild].[dbo].[CustomerOrder]
WHERE BookingSourceId = 1
AND CustomerOrderStatusId = 7 AND DepartmentId = 1
GROUP BY CAST(DateCreated AS DATE)
解决方案
我猜你想要条件聚合:
SELECT CAST(co.DateCreated AS DATE),
SUM(CASE WHEN BookingSOurceId = 1 THEN 1 ELSE 0 END) as Website,
SUM(CASE WHEN BookingSOurceId = 2 THEN 1 ELSE 0 END) as Phone,
COUNT(*) as Total_Orders
FROM [Sterlingbuild].[dbo].[CustomerOrder] co
WHERE CustomerOrderStatusId = 7 AND DepartmentId = 1
GROUP BY CAST(a.DateCreated AS DATE)
ORDER BY CAST(a.DateCreated AS DATE)
推荐阅读
- python - TypeError: 'numpy.int32' object is not iterable - 使用 sklearn_crfsuite 时出错
- c++ - 有没有一种方法可以将本地 Windows 调试器的输出集成到 Visual Studio 的界面中?
- c# - 如何删除位图数据的 Scan 0 成员中的不安全块
- php - 什么是正确的关系?- 拉拉维尔
- git - 添加和提交文件后,git push 不起作用
- spring-boot - 如何在单个路由中聚合两条消息?
- html - 附加内容不会位于为移动设备堆叠的包装 DIV 下方
- python - Anaconda - 下载后无法离线安装包
- python - “老鼠现在在哪里?”
- c# - 异步函数中的动态变量