首页 > 解决方案 > 在单行结果集中返回多行

问题描述

我有三个 MSSQL 表。第一个表是项目交易,第二个是项目表(我得到项目的名称和特定项目的其他规格),第三个表是项目交付类型表(如 Box、Pack 和 Pieces 及其转换因素)

第一个表字段;

..., itemid, trtype, trdate, amount, price, dlvid ...

第二个表字段;

..., itemid, itemcode, itemname ...

第三个表字段;

... dlvid, IsMain, dlvname, convfactor ...

11 1 Box  [1]

12 0 Pack [25]   (1 box = 25 Packs)

13 0 Pcs  [375]  (1 Pack = 15 Pcs, 1 Box = 375 Pcs)

括号中的数字是转换因子

之前,我将它们放在网格视图中。itemname(来自 2.nd 表)、trtype、trdate、amount(来自 1.st 表)和 dlvname(来自 3.rd 表)然后就可以了。

但是现在我必须在一行中显示所有的交付类型,计算如下:

Faber 绘图铅笔 3B | 出| 05.06.2018 | 6 盒,150 包,2,250 件...

你能帮我解决这些问题吗?

提前致谢。

标签: sql-servertsql

解决方案


首先我想让你知道你的问题质量很低。很难理解您的表和数据类型。甚至不清楚您在哪种情况下遇到问题?

所以下次请阅读如何创建一个最小、完整和可验证的示例

这是你的答案:

select 
  ...
  STRING_AGG (concat(amount, ' ', trtype), ',') within group (order by amount asc)
from 
  Table 1 
Inner Join Table2 on ....
inner join table3 on ...

推荐阅读