使用T-SQL中具有常量值的新列插入来自不同表的值

时间:2017-10-26 18:01:22

标签: sql sql-server tsql

我将表中的所有值插入到另一个表中,该表是即时创建的。我想在我创建的新表中插入一个具有常量值的额外列。

我有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?我看到这个post已经创建了表,然后插入了值。但在我的情况下,我该怎么做?

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:3)

你只需添加它:

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

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

答案 1 :(得分:1)

您可以将其视为任何其他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];

答案 2 :(得分:0)

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

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