首页 > 解决方案 > 在多列上计数不同

问题描述

我有两个 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 |

我正在尝试按员工计算不同的订单号和销售额。订单标志将是10。如果销售额大于0.00订单标志将设置为1

我想要的输出。

| Employee | Sales  | Orders |
|----------|--------|--------|
| Don      | 87.00  | 1      |
| Ken      | 130.00 | 1      |
| Pete     | 200.00 | 1      |
| Roger    | 234.00 | 1      |

我试图组合不同的、大小写和 concat 语句,但没有任何运气。有什么想法吗?

标签: sqloracle

解决方案


你可以使用这个:

with cteTotalSales (...) as ()
select employee, 
   case when (sum(sales)) > 0 
     then 1 else 0 as Orders, 
 sum(sales)
from cteTotalSales
group by employee

推荐阅读