我想要的是这样的事情:
SELECT * FROM [dbo].[UNIONTABLE1]
UNION
SELECT * FROM [dbo].[UNIONTABLE2]
AS RESULTUNION;
DELETE FROM [dbo].[ResultTestTable];
INSERT INTO [dbo].[ResultTestTable]
(
test2
,test3
,test4
,test5
,test6
,test7
)
VALUES
(
RESULTUNION.LT_ALL_TAB_NAME
,RESULTUNION.LT_SCH_KL_RED_GASDRUCK
,RESULTUNION.LT_EINST_NOR_ZEIT + RESULTUNION.LT_EINST_NOR_AUSBLASZEIT
,RESULTUNION.LT_EINST_SAN_ZEIT + RESULTUNION.LT_EINST_SAN_AUSBLASZEIT
,RESULTUNION.LT_EINST_NOR_ZEIT_PCS + RESULTUNION.LT_EINST_NOR_AUSBLASZEIT_PCS
,RESULTUNION.LT_EINST_SAN_ZEIT_PCS + RESULTUNION.LT_EINST_SAN_AUSBLASZEIT_PCS
);
我想用RESULTUNION表的所有行填充ResultTestTable,但只能使用RESULTUNION表的特定列。 此外,我想添加RESULTUNION表的两个列数据并将其映射到ResultTestTable中的一列。 添加的值是浮点数。
我正在使用Microsoft SQL Server Management Studio。
上面的状态不起作用,这是显而易见的,但我不知道该怎么做。 如果我执行上面的语句,我会收到以下错误: 消息4104,级别16,状态1,过程test_storedProcedure,第31行 无法绑定多部分标识符“RESULTUNION.LT_ALL_TAB_NAME”。
我假设我必须执行类似for循环的操作,但我不知道RESULTUNION表必须循环多少行。
有没有人有想法。 感谢名单
答案 0 :(得分:1)
首先,永远不要在SQL中使用“SELECT *”,始终指定列名。一旦考虑到这一点,就会更容易看到解决方案。这是:
INSERT INTO [dbo].[ResultTestTable]
(
test2
,test3
,test4
,test5
,test6
,test7
)
SELECT
LT_ALL_TAB_NAME
,LT_SCH_KL_RED_GASDRUCK
,LT_EINST_NOR_ZEIT + LT_EINST_NOR_AUSBLASZEIT
,LT_EINST_SAN_ZEIT + LT_EINST_SAN_AUSBLASZEIT
,LT_EINST_NOR_ZEIT_PCS + LT_EINST_NOR_AUSBLASZEIT_PCS
,LT_EINST_SAN_ZEIT_PCS + LT_EINST_SAN_AUSBLASZEIT_PCS
FROM [dbo].[UNIONTABLE1]
UNION ALL -- This will keep duplicate rows. UNION, without ALL, removes duplicates
SELECT
LT_ALL_TAB_NAME
,LT_SCH_KL_RED_GASDRUCK
,LT_EINST_NOR_ZEIT + LT_EINST_NOR_AUSBLASZEIT
,LT_EINST_SAN_ZEIT + LT_EINST_SAN_AUSBLASZEIT
,LT_EINST_NOR_ZEIT_PCS + LT_EINST_NOR_AUSBLASZEIT_PCS
,LT_EINST_SAN_ZEIT_PCS + LT_EINST_SAN_AUSBLASZEIT_PCS
ROM [dbo].[UNIONTABLE2]
显然,如果两个表的列具有不同的名称,则必须相应地修改查询。