SQL在彼此之上添加行而不是放在

时间:2016-04-25 14:50:48

标签: sql sql-server

对于以下表格;

PRICE_TABLE             FACT_TABLE
P_ID                    P_ID
1                       0    
2                       0
3                       0
...                     ....

我正在尝试将PRICE_TABLE P_ID的值添加到FACT_TABLE中。我已经使用了以下查询;

INSERT INTO FACT_TABLE(P_ID) SELECT P_ID FROM PRICE_TABLE

我在FACT_TABLE中有几个与其他表相对应的类似字段,即。 SALES_TABLE S_ID需要以同样的方式过来。{/ p>

然而像这样运行查询;

INSERT INTO FACT_TABLE(P_ID) SELECT P_ID FROM PRICE_TABLE

INSERT INTO FACT_TABLE(S_ID) SELECT S_ID FROM SALES_TABLE

将第二个INSERT语句添加到另一个上面,因此第二个ID仅在第一个ID完成时开始。

例如

FACT_TABLE
P_ID     S_ID
1        NULL
2        NULL
3        NULL
NULL     1
NULL     2
NULL     3
...      ...

有人有任何建议吗?

2 个答案:

答案 0 :(得分:1)

如果你想要他们全部 如果没有任何内容可以作为

的关联,则无法关联
INSERT INTO FACT_TABLE (P_ID, S_ID) 
SELECT P_ID, S_ID
FROM       PRICE_TABLE 
CROSS JOIN SALES_TABLE

答案 1 :(得分:0)

您正在运行两个单独的插入内容。所以第一个运行并填充P_ID然后第二个运行并填充S_ID。您希望将两个插入合并为一个。

INSERT INTO FACT_TABLE (P_ID, S_ID)
VALUES (pt.P_ID, st.S_ID)
FROM PRICE_TABLE pt
INNER JOIN SALES_TABLE st
on st.P_ID = pt.P_ID

以上假设PRICE_TABLE和SALES_TABLE有一个公共列(在本例中为P_ID)。如果他们不需要提供有关您尝试完成的内容的更多信息(您是否希望每个S_ID都有P_ID,那么您只需要P_ID = S_ID等)。