【问题标题】:Insert a derived table in SQL into a newly created table将 SQL 中的派生表插入到新创建的表中
【发布时间】:2017-06-23 15:04:32
【问题描述】:

我有两个表(Current 和 Prior),它们具有所有相同的列,并通过查询中的完全外部联接进行组合。我还有一个派生列,用于比较 Current 和 Prior 对应字段的值并说明它们是否匹配。这将创建一个派生表,其中包含所有当前字段和先前字段以及派生比较列。我需要在捕获该数据的数据库中创建一个实际表。我该怎么做?

【问题讨论】:

  • SELECT ... INTO NewTableName FROM ...?您也可以提前创建表格并执行INSERT NewTableName (columns...) SELECT ...
  • 不过,对于 view 与表格相比,这听起来是个好主意。
  • 我会使用一个 proc 从两个表和比较列中选择一个临时表,然后从中选择。更易于管理且内存更少。
  • 什么是proc?我也试过只做 select ... into ,但由于某种原因它实际上并没有继承我试图插入的值

标签: sql sql-server-2008


【解决方案1】:

这应该会创建一个视图供您使用,以防表不是很大。

CREATE VIEW [dbo].[vw_Compare]
AS
SELECT /* Column list*/
    IIF(A.Col1 IS NULL, 1, 0) AS [CompareCol1],
    IIF(A.Col2 IS NULL, 1, 0) AS [CompareCol2]
FROM A
FULL OUTER JOIN C
    ON A.Col1 = C.Col1

如果你想创建一个表:

CREATE TABLE [dbo].[Compare]
(
    [CompareCol1] BIT,
    [CompareCol2] BIT,
    /* Insert Column 1 to N here */
)

INSERT INTO [dbo].[Compare]
(
    [CompareCol1],
    [CompareCol2],
    /* Column list*/
)
SELECT IIF(A.Col1 IS NULL, 1, 0) AS [CompareCol1],
    IIF(A.Col2 IS NULL, 1, 0) AS [CompareCol2],
    /* Column list*/
FROM A
FULL OUTER JOIN C
    ON A.Col1 = C.Col1

【讨论】:

    猜你喜欢
    • 2021-06-19
    • 2017-04-19
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    相关资源
    最近更新 更多