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中做相同的事情。这些表没有公共密钥当然行数!)。

+0

嗨@AkashKC你是什么意思? –

+4

SQL表格是在无序记录集之后建模的。您将需要在四个表格中的每一个中至少有第二列,它们提供了我们现在看到的顺序。随着这一点,一个联合将变得可行。 –

+0

你好@TimBiegeleisen他们已经在正确的顺序,即行号。 –

你可以使用这样的事情:

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你说得对,我编辑了我的答案,不,它应该保留原始数据的行顺序 –