我有一个类似SQL的数据集
Col1 Col2 Col3 Col4
A re T huge
A re T small
B re T huge
C re T huge
C re T medium
C re T small
对于前3列中的任何重复项,我想在其旁边创建新列,并使用Col4中的每个唯一值。我的最终目标是将其加入另一个数据集,并且我想包括所有信息。
我希望最终数据集看起来像这样:
Col1 Col2 Col3 Col4 Col5 Col6 ....
A re T huge small NULL
B re T huge NULL NULL
C re T huge medium small
答案 0 :(得分:0)
您可以使用CTE进行此操作,该CTE在分区的前三列生成ROW_NUMBER(),并根据您要使用的任何逻辑进行排序。
然后您从CTE分组的前三列中进行选择,并对每个其他列进行子选择,从而为第一列增加关联的RowNumber = 1,为第二列增加关联的RowNumber = 2,等等。>
替代子选择,您可以改用MAX(CASE)表达式。
请注意,如果您不知道会有多少其他列,则必须使用动态sql来完成。
答案 1 :(得分:0)
我认为这就是您想要的
SELECT AA.col1,
AA.col2,
AA.col3,
small.col4 AS col4,
huge.col4 AS col5,
medium.col4 AS col6
FROM (SELECT col1,
col2,
col3
FROM your_table
GROUP BY col1,
col2,
col3)AA
LEFT JOIN (SELECT col1,
col2,
col3,
col4
FROM your_table
WHERE col4 = small)small
ON ( small.col1 = AA.col1
AND small.col2 = AA.col2
AND small.col3 = AA.col3 )
LEFT JOIN (SELECT col1,
col2,
col3,
col4
FROM your_table
WHERE col4 = huge)huge
ON ( huge.col1 = AA.col1
AND huge.col2 = AA.col2
AND huge.col3 = AA.col3 )
LEFT JOIN (SELECT col1,
col2,
col3,
col4
FROM your_table
WHERE col4 = medium)medium
ON ( medium.col1 = AA.col1
AND medium.col2 = AA.col2
AND medium.col3 = AA.col3 )