簡體   English   中英

根據列中的值將新列添加到臨時表

[英]Add new column to temp table based on values from a column

我想從下表創建一個臨時表。

------------------------|--------
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

並讓臨時表如下所示。

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 Server2016。兼容性級別:SQL Server 2005(90)

case

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;
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

輸出值

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

您可以使用“創建表...作為選擇...”語法

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

資料來源:

網上技術-SQL:CREATE TABLE AS語句

MSDN-創建表作為選擇

Oracle-創建表

...

-可以幫助

;WITH cte (
    [Date]
    ,[Length]
    )
AS (
    SELECT cast('2014-08-28 00:00:00.000' AS DATETIME)
        ,CAST('1.5' AS DECIMAL(4, 2))

    UNION ALL

    SELECT '2014-08-28 00:00:00.000'
        ,'2.6'

    UNION ALL

    SELECT '2014-08-28 00:00:00.000'
        ,'1.5'

    UNION ALL

    SELECT '2014-08-28 00:00:00.000'
        ,'3.3'

    UNION ALL

    SELECT '2014-08-28 00:00:00.000'
        ,'1.1'

    UNION ALL

    SELECT '2014-08-28 00:00:00.000'
        ,'8.5'

    UNION ALL

    SELECT '2014-08-28 00:00:00.000'
        ,'8.6'

    UNION ALL

    SELECT '2014-08-28 00:00:00.000'
        ,'11.3'
    )
SELECT *
    ,CASE 
        WHEN Length < 1
            THEN '< 1'
        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'
        WHEN Length > 15
            THEN '> 15'
        END AS Length_Range
FROM cte

我明白你的問題。 但是您的答案已經可以通過以下鏈接獲得。

點擊這里

因此,請參考此鏈接並獲取更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM