SQL-组合不同数量值的列
我有3个表,其中有不同的数据。具体来说,每个表中每个mainID的值数量不同。我想做的是编写一个查询,从3个表中获取信息,并将其转换为底部的“最终表” 表1 表2 表3 最终表格SQL-组合不同数量值的列,sql,sql-server,Sql,Sql Server,我有3个表,其中有不同的数据。具体来说,每个表中每个mainID的值数量不同。我想做的是编写一个查询,从3个表中获取信息,并将其转换为底部的“最终表” 表1 表2 表3 最终表格 谢谢您需要左键加入表2和表3与表1 像这样的东西应该对你有帮助 ;WITH tab1 AS (SELECT Row_number()OVER(partition BY [mainID] ORDER BY [value]) rn,* FROM Table1), tab2
谢谢您需要
左键加入表2
和表3
与表1
像这样的东西应该对你有帮助
;WITH tab1
AS (SELECT Row_number()OVER(partition BY [mainID] ORDER BY [value]) rn,*
FROM Table1),
tab2
AS (SELECT Row_number()OVER(partition BY [mainID] ORDER BY [value]) rn,*
FROM Table2),
tab3
AS (SELECT Row_number()OVER(partition BY [mainID] ORDER BY [value]) rn,*
FROM Table3)
SELECT a.mainID,
a.value AS Table1Value,
b.value AS Table2Value,
c.value AS Table3Value
FROM tab1 a
LEFT JOIN tab2 b
ON a.rn = b.rn
AND a.mainID = b.mainID
LEFT JOIN tab3 c
ON a.rn = c.rn
AND a.mainID = c.mainID
注意:结果顺序没有列,因此结果顺序可能略有不同。如果您有任何列要排序结果,请将其添加到行编号
窗口函数的排序依据
左连接是您需要的,尽管您如何选择不将铅笔和奶昔与猫关联?你的逻辑或业务规则是什么?
mainID value
------ ------
ID1 Pencil
ID2 Pencil
mainID value
------ ------
ID1 Milkshake
ID1 Kool-Aid
ID2 Water
ID2 Soda
mainID Table1Value Table2Value Table3Value
------ ----------- ----------- -----------
ID1 Dogs Pencil Milkshake
ID1 Cats Kool-Aid
ID1 Elephant
ID1 Snake
ID1 Tiger
ID1 Lamb
ID2 Dogs Pencil Water
ID2 Cats Soda
ID2 Elephant
ID2 Snake
ID2 Tiger
;WITH tab1
AS (SELECT Row_number()OVER(partition BY [mainID] ORDER BY [value]) rn,*
FROM Table1),
tab2
AS (SELECT Row_number()OVER(partition BY [mainID] ORDER BY [value]) rn,*
FROM Table2),
tab3
AS (SELECT Row_number()OVER(partition BY [mainID] ORDER BY [value]) rn,*
FROM Table3)
SELECT a.mainID,
a.value AS Table1Value,
b.value AS Table2Value,
c.value AS Table3Value
FROM tab1 a
LEFT JOIN tab2 b
ON a.rn = b.rn
AND a.mainID = b.mainID
LEFT JOIN tab3 c
ON a.rn = c.rn
AND a.mainID = c.mainID