根据案例陈述聚合结果

  • 本文关键字:结果 陈述聚 案例 sql
  • 更新时间 :
  • 英文 :


编写查询需要一些帮助。假设我使用的是sales表,如下所示:

trans_id    item_number     sales 
1            1             10
1            11            5
2            11            3
2            13            4

我希望我的输出包含trans_id、交易的总销售额和Y/N标志其可以由该情况语句确定:CCD_ 3。

但是,我需要在聚合级别应用该标志,如果至少有一个项目具有"Y"标志,那么整个事务应该包括'Y'标志。如果没有项目具有'Y'标志,则整个事务应标记为'N'。输出应该基本上看起来像:

trans_id    flag        sales
1         'Y'          15
2         'N'          7

下面的查询几乎让我达到了目的,但我必须将其用作子查询给我预期的结果。是否可以修改CASE语句或使用一些其他方法,以便我可以在相同的SELECT内获得所需的结果语句(即不使用下面的查询作为子查询(?

SELECT trans_id
, CASE WHEN item_number BETWEEN 1 AND 10 THEN 'Y' ELSE 'N' END
, SUM(sales)
FROM sales
GROUP BY trans_id, item_number

您可以使用max():

select trans_id,
max(case when item_number between 1 and 10 then 'Y' else 'N' end),
sum(sales)
from sales
group by trans_id;

对于'Y''N'MAX()充当聚合OR运算。MIN()将是一个聚合AND——也就是说,所有项目编号都在该范围内。

最新更新