0

我想要的是这样的:

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。

上面的声明不起作用,这很明显,但我不知道如何正确地做。如果我执行上面的语句,我得到以下错误: Msg 4104, Level 16, State 1, Procedure test_storedProcedure, Line 31 无法绑定多部分标识符“RESULTUNION.LT_ALL_TAB_NAME”。

我假设我必须执行类似 for 循环的操作,但我不知道 RESULTUNION 表必须循环多少行。

有没有人有想法。谢谢

4

1 回答 1

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]

显然,如果两个表的列名称不同,则必须相应地修改查询。

于 2012-07-31T16:09:58.353 回答