首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据列的值向临时表添加新列

根据列的值向临时表添加新列
EN

Stack Overflow用户
提问于 2017-03-16 11:35:30
回答 5查看 641关注 0票数 0

我想从下表创建一个临时表。

代码语言:javascript
复制
------------------------|--------
Date                    | Length
------------------------|--------
2014-08-28 00:00:00.000 | 1.5 
2014-08-28 00:00:00.000 | 2.6
2014-08-28 00:00:00.000 | 1.5
2014-08-28 00:00:00.000 | 3.3
2014-08-28 00:00:00.000 | 1.1
2014-08-28 00:00:00.000 | 8.5
2014-08-28 00:00:00.000 | 8.6
2014-08-28 00:00:00.000 | 11.3

让临时表看起来像下面的那个。

代码语言:javascript
复制
Date                    | Length  | Length_Range
------------------------|---------|--------------
2014-08-28 00:00:00.000 |  1.5    |   1-4
2014-08-28 00:00:00.000 |  2.6    |   1-4
2014-08-28 00:00:00.000 |  6.5    |   5-10
2014-08-28 00:00:00.000 |  3.3    |   1-4
2014-08-28 00:00:00.000 |  1.1    |   1-4
2014-08-28 00:00:00.000 |  8.5    |   5-10
2014-08-28 00:00:00.000 |  8.6    |   5-10
2014-08-28 00:00:00.000 |  11.3   |   11-15

我希望能够定义Length_Range。

Microsoft SQL Server 2016兼容性级别: Server 2005 (90)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-03-16 11:39:31

使用case

代码语言:javascript
复制
select t.*,
       (case when length >= 1 and length < 4 then '1-4'
             when length < 10 then '5-10'
             when length < 15 then '11-15'
             else '16+'
        end) as length_range
into #temp_t
from t;
票数 1
EN

Stack Overflow用户

发布于 2017-03-16 11:40:09

代码语言:javascript
复制
CREATE TABLE #TABLE1
    ([DATE] DATETIME, [LENGTH] FLOAT)
INSERT INTO #TABLE1
    ([DATE], [LENGTH])
VALUES
    ('2014-08-28 00:00:00', 1.5),
    ('2014-08-28 00:00:00', 2.6),
    ('2014-08-28 00:00:00', 1.5),
    ('2014-08-28 00:00:00', 3.3),
    ('2014-08-28 00:00:00', 1.1),
    ('2014-08-28 00:00:00', 8.5),
    ('2014-08-28 00:00:00', 8.6),
    ('2014-08-28 00:00:00', 1.3)

SELECT *,CASE  
WHEN LENGTH BETWEEN 1 AND 4 THEN '1-4'
WHEN LENGTH BETWEEN 5 AND 10 THEN '5-10'
WHEN LENGTH BETWEEN 11 AND 15 THEN '11-15' END AS LENGHT_RANGE
FROM #TABLE1

输出

代码语言:javascript
复制
Date                    Length  LENGHT_RANGE
2014-08-28 00:00:00.000  1.5          1-4
2014-08-28 00:00:00.000  2.6          1-4
2014-08-28 00:00:00.000  1.5          1-4
2014-08-28 00:00:00.000  3.3          1-4
2014-08-28 00:00:00.000  1.1          1-4
2014-08-28 00:00:00.000  8.5          5-10
2014-08-28 00:00:00.000  8.6          5-10
2014-08-28 00:00:00.000  1.3          1-4
票数 1
EN

Stack Overflow用户

发布于 2017-03-16 12:01:16

你可以使用创建表..。作为选择..。语法

代码语言:javascript
复制
CREATE TABLE temp_table AS
SELECT [date], [length], 
       CASE  
         WHEN length BETWEEN 1 AND 4 THEN '1-4'
         WHEN length BETWEEN 5 AND 10 THEN '5-10'
         WHEN length BETWEEN 11 AND 15 THEN '11-15' 
       END AS LENGTH_RANGE
 FROM orig_table

资料来源:

Net -SQL上的技术:创建表作为语句

MSDN -以选择的形式创建表

Oracle -创建表

..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42832978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档