繁体   English   中英

在T-SQL中插入来自具有新列的常量表的其他表中的值

[英]Insert values from a different table with a new column with constant value in T-SQL

我正在将一个表中的所有值插入动态创建的另一个表中。 我想在我创建的新表中插入一个常量值的额外列。

我有这样的FinSls表,

Time             Terminal_ID   Count
------------------------------------
2017-10-19 06:03:00     1       5
2017-10-19 06:04:00     1       2
2017-10-19 06:05:00     1       2
2017-10-19 06:06:00     1       2
2017-10-19 06:03:00     9       2
2017-10-19 06:04:00     9       3
2017-10-19 06:05:00     9       2
2017-10-19 06:06:00     9       3

我正在创建一个新表BinTable ,我想添加一个具有常量值的cons_val列,例如:1,像这样,

Time              Terminal_ID  Count  Cons_value
------------------------------------------------
2017-10-19 06:03:00     1       5      1
2017-10-19 06:04:00     1       2      1
2017-10-19 06:05:00     1       2      1
2017-10-19 06:06:00     1       2      1
2017-10-19 06:03:00     9       2      1
2017-10-19 06:04:00     9       3      1
2017-10-19 06:05:00     9       2      1
2017-10-19 06:06:00     9       3      1

到目前为止,我的脚本是这样的

select *
into  
   BinTable
from 
   FinlSls

我如何添加一个新列Cons_Value到我BinTable 我看到这篇文章已经创建了表,然后插入了值。 但是在我的情况下,我该怎么做?

任何帮助都是极好的。

您只需添加它:

select f.*, 1 as cons_value
into BinTable
from FinlSls f;

使用select *而不是列出各列可能会有一些批评。

您可以像对待其他任何INSERT语句一样对待它,然后选择要插入的列。 另外,您可以选择选择哪些列,这也允许您联接。

最好先定义表,以确保创建主键等,我认为这已经在您的流程中创建了。 我假设这是一次交易,在这种情况下,您希望表正确索引。 如果这是用于存储过程的临时表,那么我建议使用临时表(以#开头)。

CREATE TABLE
   [BinTable]
(
   [BinTableID] INT PRIMARY KEY IDENTITY(1,1),
   [Time] DATETIME,
   [Terminal_ID] INT,
   [Count] INT,
   [Cons_val] INT
);

然后,您可以插入数据。

INSERT INTO
   [BinTable]
([Time], [Terminal_ID], [Count], [Cons_value])
SELECT
    [Time], 
    [Terminal_ID], 
    [Count],
    1 AS [Cons_value]
FROM
    [FinSls];

如果新表已经存在,请使用INSERT SELECT,否则可以使用下面的代码

SELECT Time, Terminal_ID, Count, 1
INTO BinTable
FROM FinlSls

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM