sql从其他表中的列创建表
问题描述:
我有4个表称为table1,table2,table3,table4。每个人都有一列在它被称为X,Y,Z和W分别为:sql从其他表中的列创建表
x y z w
--- ------ ------ ----
1 A 120 Red
2 B 33.3 Orange
3 C 81.3 Green
4 D 41.3 Blue
我想创建一个仅仅有它其列,只是这些列,其中行的顺序不变的新表。在R()中,我只是做一些像data.frame(x,y,z,w)的东西,但是,我不知道如何在SQL Server 2016中做相同的事情。这些表没有公共密钥当然行数!)。
答
你可以使用这样的事情:
WITH CTE_Table1 AS (
SELECT x, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS x_row
FROM Table1
), CTE_Table2 AS (
SELECT y, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS y_row
FROM Table2
), CTE_Table3 AS (
SELECT z, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS z_row
FROM Table3
), CTE_Table4 AS (
SELECT w, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS w_row
FROM Table4
)
SELECT x, y, z, w
FROM CTE_Table1
INNER JOIN CTE_Table2 ON CTE_Table1.x_row = CTE_Table2.y_row
INNER JOIN CTE_Table3 ON CTE_Table1.x_row = CTE_Table3.z_row
INNER JOIN CTE_Table4 ON CTE_Table1.x_row = CTE_Table4.w_row
+0
这将更改列顺序,至少对于“z”和“w”,并且他希望保持当前数据集的顺序。正如注释中所指出的,row_number()需要一个列来排序,而这些表没有列。 –
+0
@AlbertoMartinez你说得对,我编辑了我的答案,不,它应该保留原始数据的行顺序 –
嗨@AkashKC你是什么意思? –
SQL表格是在无序记录集之后建模的。您将需要在四个表格中的每一个中至少有第二列,它们提供了我们现在看到的顺序。随着这一点,一个联合将变得可行。 –
你好@TimBiegeleisen他们已经在正确的顺序,即行号。 –