SQL Server 从查询中删除重复项

zkure5ic  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(130)

我有下表
| 项目|面积|数量|
| - -|- -|- -|
| 项目1|一种|10个|
| 项目1| B|十七岁|
| 项目2| B|二十个|
| 项目3|一种|10个|
| 项目2| C语言|八个|
我希望有一个结果在SQL如下(一个独特的项目和一个独特的领域):
| 项目|A区|区域B| C区|
| - -|- -|- -|- -|
| 项目1| 10个|十七岁|第0页|
| 项目2|第0页|二十个|八个|
| 项目3| 10个|第0页|第0页|
我确实有这个查询,它没有给我什么正在寻找,如果该地区已被改变或增加,也其为2列表,而不是3列:

select 
    item, 
    max(case when seqnum = 1 then area end) as area_1, 
    max(case when seqnum = 2 then area end) as area_2, 
    max(case when seqnum = 3 then area end) as area_3 
from (
    select A.*, 
        row_number() over (partition by item order by area) as seqnum 
    from A 
) A 
group by item;

期待您的帮助。

n53p2ov0

n53p2ov01#

  • 如果 * 你有一个固定的区域列表,那么就不需要窗口功能;您可以显式筛选max()中的每个单独值。

对查询的另一个修正是采用qty,而不是area(其值已被过滤)的最大值。

select item, 
    coalesce(max(case when area = 'a' then qty end), 0) as area_a,
    coalesce(max(case when area = 'b' then qty end), 0) as area_b, 
    coalesce(max(case when area = 'c' then qty end), 0) as area_c
from mytable 
group by item

相关问题