sql - 在多列上计数不同
问题描述
我有两个 CTE。以下是我的第一个 CTE 的输出。
| ORDER_NUMBER | ORDER_FLAG | EMPLOYEE | PRODUCT_CATEGORY | SALES |
|--------------|------------|----------|------------------|--------|
| 3158132 | 1 | Don | Newpaper Ad | 16.00 |
| 3158132 | 1 | Don | Magazine Ad | 15.00 |
| 3158132 | 0 | Don | TV Ad | 0.00 |
| 3158132 | 1 | Don | Billboard Ad | 56.00 |
| 3006152 | 1 | Roger | TV Ad | 20.00 |
| 3006152 | 0 | Roger | Magazine Ad | 0.00 |
| 3006152 | 1 | Roger | Newspaper Ad | 214.00 |
| 3012681 | 1 | Ken | TV Ad | 130.00 |
| 3012681 | 0 | Ken | Magazine Ad | 0.00 |
| 9818123 | 1 | Pete | Billboard Ad | 200.00 |
我正在尝试按员工计算不同的订单号和销售额。订单标志将是1
或0
。如果销售额大于0.00
订单标志将设置为1
。
我想要的输出。
| Employee | Sales | Orders |
|----------|--------|--------|
| Don | 87.00 | 1 |
| Ken | 130.00 | 1 |
| Pete | 200.00 | 1 |
| Roger | 234.00 | 1 |
我试图组合不同的、大小写和 concat 语句,但没有任何运气。有什么想法吗?
解决方案
你可以使用这个:
with cteTotalSales (...) as ()
select employee,
case when (sum(sales)) > 0
then 1 else 0 as Orders,
sum(sales)
from cteTotalSales
group by employee
推荐阅读
- angular - (Angular2/4/5/6) 如何根据国家/地区验证国际电话号码的长度
- python - 通过不和谐机器人为每个人设置唯一的关键字
- javascript - 每小时触发器导致每小时发送电子邮件警报,但只需要第一次
- wpf - 在 WPF 中,是否可以将 ItemsControl 的 ItemContainerGenerator.StatusChanged 事件作为 MVVM 模式命令获取?
- .htaccess - 如何从子域中删除文件夹名称
- c# - 当关系应该是隐式的时,如何避免显式定义泛型类型参数?
- c++ - filter2D 实现的差异
- android - 如何将位图保存到内部存储?
- sql-server - 如何为 SQL Server 数据的多个获取请求设置 API 服务器?
- php - Magento 1.9 中的 Ajax cart pro 扩展冲突