【问题标题】:sql combine rows with same datesql将具有相同日期的行合并
【发布时间】:2018-10-29 07:27:52
【问题描述】:

当它们具有相同的日期和项目编号时,我想合并行,同时汇总收到的数量和未完成的数量。此外,PO# 应与“,”组合。

请参考下面的图片或表格。 提前谢谢你!

这是我的 SQL 查询...

SELECT * 
from [mason01].[dbo].[po_east] as t1
inner join (select distinct [Date],[ITEMNO],[PONUMBER],[LOCATION],[Received],[Outstanding]
  FROM [mason01].[dbo].[po_east] group by [Date], [ITEMNO],[PONUMBER],[LOCATION],[Received],[Outstanding]) as t2
  on t1.Date=t2.Date and t1.ITEMNO=t2.ITEMNO

收到 ITEMNO PONUMBER LOCATION 的日期

2018 年 4 月 22 日 MA1005 SON18497 SF 50 50
2018 年 4 月 22 日 MA1005 SON18562 SF 300 0

收到 ITEMNO PONUMBER LOCATION 的日期

2018 年 4 月 22 日 MA1005 SON18497、SON18562 SF 350 50

参考这张图片:

【问题讨论】:

  • 好。那么,问题是什么?它不工作吗?如果是这样,怎么做?你得到了什么?数据错误?有什么错误吗?
  • 请不要发布图片。改为复制并粘贴为文本。
  • 感谢您修改格式!!我对stackoverflow很陌生。再次感谢您!
  • 欢迎来到stackoverflow。请花一分钟时间获取tour,尤其是How to Ask。样本数据最好以DDL + DML 的形式提供。请edit您的问题包括它,您当前的尝试和您想要的结果。更多详情,read this.
  • 发布与数据库相关的问题时,请务必标记特定的数据库供应商(我在这里猜测 SQL-Server)以及特定的版本标记(即 Sql-Server-2016) .

标签: sql ddl sql-server-2017 dml


【解决方案1】:

你可以尝试使用 stuff() 函数

SELECT
      [Date],[ITEMNO],[LOCATION],sum([Received]) as [Received] ,sum([Outstanding]) as [Outstanding]
      ,ponum = STUFF((
          SELECT ',' + b.[PONUMBER]
          FROM [mason01].[dbo].[po_east] b
          WHERE a.[Date] = b.[Date] and a.[ITEMNO]=b.[ITEMNO]
          FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM [mason01].[dbo].[po_east] a
group by [Date],[ITEMNO],[LOCATION]

【讨论】:

  • 哦,我不知道有这样的功能..我只是接受你的答案作为最佳答案。
猜你喜欢
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 2016-11-03
相关资源
最近更新 更多