微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用合并列和行的 SQL 构建报告?

如何解决使用合并列和行的 SQL 构建报告?

这是我的桌子:

餐桌购买报告

PURC_ID CUS_ID 产品 数量 日期
1 约翰 Leg_01 2 2021-04-09
2 约翰 Head_01 1 2021-04-09
3 黎明 Head_01 1 2021-04-09
4 黎明 肩_01 2 2021-04-09
5 黎明 Leg_01 1 2021-04-09
6 基思 Leg_01 2 2021-04-09

我想按如下方式构建报告:

表 4:(PURC 表将与其他列合并。我需要产品代码后跟下划线后跟数量)。

REP_ID 客户 PURC 日期
1 约翰 头_01_1,腿_01_2 2021-04-09
2 黎明 头_01_1,肩_01_2,腿_01_1 2021-04-09
3 基思 Leg_01_2 2021-04-09

我知道如何连接表格,但我不确定如何以这种格式进行组合。非常感谢任何帮助。

解决方法

您可以使用这样的查询:

SELECT
  Cust,STRING_AGG(Product + '_' + CAST(QTY AS varchar(10)),',') AS PURC,Date 
FROM PURC_Table 
GROUP BY Cust,Date

注意:STRING_AGG() 在 SQL Server 2017 及更高版本上受支持。

,

以下应该为您提供所需的输出

select row_number() over(order by avg(purc_id)) REP_ID,CUS_ID Cust,string_agg(product + '_' + cast(Qty as varchar(2)),') PURC,[Date]
from PurchaseReport
group by CUS_ID,[Date]
,

第一列似乎基于最小的 purc_id。对于串联列,其他答案都很好,但 concat() 更方便:

select row_number() over (order by min(purc_id)) as rep_id
       cus_id as Cust,string_agg(concat(product,'_',qty),') as purc,[Date]
from PurchaseReport
group by cus_id,[Date]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。