Sql 基于案例陈述的聚合结果

Sql 基于案例陈述的聚合结果,sql,Sql,需要一些帮助来编写查询。假设我正在使用一个表sales,如下所示: trans_id item_number sales 1 1 10 1 11 5 2 11 3 2 13 4 我希望我的输出包含交易id、交易的总销售额和Y/N标志 这可以通过下面的case语句确定:当项目编号介

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

trans_id    item_number     sales 
   1            1             10
   1            11            5
   2            11            3
   2            13            4
我希望我的输出包含交易id、交易的总销售额和Y/N标志 这可以通过下面的case语句确定:
当项目编号介于1和10之间时的case,然后“Y”或“N”结束

但是,我需要在聚合级别应用该标志,如果至少有一个项目具有“Y”标志,那么整个事务应该包括一个
'Y'
标志。如果没有任何项目具有
'Y'
标志,则应标记整个事务
'N'
。输出基本上应该如下所示:

trans_id    flag        sales
   1         'Y'          15
   2         'N'          7
下面的查询几乎让我达到了目的,但我不得不将其用作子查询 让我得到预期的结果。是否可以修改
案例
语句或使用 其他一些方法,以便我可以在相同的
SELECT
语句(即不使用下面的查询作为子查询)

您可以使用
max()


使用
'Y'
'N'
MAX()
充当聚合或操作
MIN()
将是一个集合,也就是说,所有项目编号都在该范围内。

谢谢!不知道
MAX()
函数是这样工作的
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
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;