SQL Server查询中相同项目名称的组项和摘要

时间:2018-01-17 06:13:09

标签: sql-server

我有一个具有相同项目名称但具有不同项目代码的表格,因为项目名称有02部分,第1部分具有相同的名称,但第2部分具有不同的名称。 结果通过以下查询返回:

select PO番号 as PONO,商品CD as ITEM_CD,品名1 as ITEM_NAME,[数量]as QTY 
from [ENVIETNAMPO].[dbo].[TBL_PO_M] 
where  PO番号='GV07182'

enter image description here

我需要对所有具有相同名称但不同的项目代码的项目进行分组,并对这些项目进行汇总。

我想要的结果如下:

enter image description here  第二行的数量是:从第2行到第10行的总和数量为2279。 我使用此查询来消除重复的项目名称:

 WITH CTE AS
    (
    SELECT *,ROW_NUMBER() OVER (PARTITION BY [GOODS CD],[Item No.] ORDER BY [GOODS CD],[Item No.]) AS RN
    FROM #tmptable
    )

DELETE FROM CTE WHERE RN<>1

但问题是我不能只获得02行作为我想要的结果。请帮忙。

1 个答案:

答案 0 :(得分:0)

Select * into #TempA
from 
( Select m.PONO,m.ITEM_NAME,Sum(m.QTY) as Total,
            dense_rank() OVER (PARTITION BY m.PONO,m.ITEM_NAME ORDER BY m.PONO,m.ITEM_NAME) AS RN from
    (
        SELECT *,ROW_NUMBER() OVER (PARTITION BY PONO,ITEM_NAME ORDER BY PONO,ITEM_NAME) AS RN
        FROM [Tbl_PO_m] 
    )m
    group by  m.PONO,m.ITEM_NAME
)A
Select * from 
(
    Select distinct  m.PONO,m.ITEM_CD,m.ITEM_NAME,a.Total,ROW_NUMBER() OVER (PARTITION BY  m.ITEM_NAME  ORDER BY  m.ITEM_NAME ) AS RN
    FROM [Tbl_PO_m] m
    inner join #TempA a on a.ITEM_NAME = m.ITEM_NAME
)A 
where RN  = 1