我试图用SQL实现这一点。
表格如下:
SerialNo part location
12345 aaa R1
12345 bbb R2
67890 ccc R3
67890 ddd R4
12345 eee R5
我想得到:
SerialNo Part1 Location1 Part2 Location2 Part3 Location3
12345 aaa R1 bbb R2 eee R5
67890 ccc R3 ddd R4
有人可以帮忙吗?
答案 0 :(得分:2)
我会说这在SQL中是不可能的;这是非常糟糕的风格。
主要问题是SQL有预定义的列数,而你的"表"没有 - 没有上限。
因此,通常情况下,您将获取数据ORDER BY sn
,然后使用执行脚本/程序对其进行相应格式化。
为了帮助您,我们需要了解您所需的脚本/编程语言。
答案 1 :(得分:0)
你可以试试枢轴。在我的例子中,我将部分和位置连接在一起,因为我不知道如何使用两列来完成此操作。这不是一个好的风格仍然存在,但也许这会帮助你一点点。
我在我的例子中命名了你的表ttt:
select 'serialno' as serialno
, [1], [2], [3], [4], [5]
from
( select ROW_NUMBER() over (partition by serialno order by part + ' - ' + location) as rn
, serialno
, (part + ' - ' + location) as pl
from ttt ) as sourcetable
pivot (
max(pl)
for rn in ([1], [2], [3], [4], [5])
) as pivottable
你可以看到我只提供了五个插槽。你可以添加更多,如果你喜欢,但总会有固定的数量