當 DDT 為“000A”時,我想給 DDT 像一個 ID,然后新列 = 100,當 DDT 為“000B”時,新列 = 200 但問題是我有 1000 個不同的 DDT 行,
我有一個像這樣的桌子
| sy3 | 滴滴涕 | 分機 |
|---|---|---|
| 12 | 000A | 35 |
| 15 | 000B | 40 |
| 16 | 000A | 12 |
| 11 | 000A | 30 |
我希望它是這樣出來的:
| sy3 | 滴滴涕 | 分機 | 滴滴涕_EXT |
|---|---|---|---|
| 12 | 000A | 35 | 100 |
| 15 | 000B | 40 | 200 |
| 16 | 000A | 12 | 100 |
| 11 | 000A | 30 | 100 |
uj5u.com熱心網友回復:
只需使用一個CASE運算式:
SELECT sy3, DDT, EXT, CASE DDT WHEN '000A' THEN 100 WHEN '000B' THEN 200 END AS DDT_EXT
FROM yourTable;
請注意,您可能還希望在某些時候擁有一個可以從DDT值映射到值的正式表DDT_EXT,如下所示:
DDT | DDT_EXT
000A | 100
000B | 200
uj5u.com熱心網友回復:
您可以創建一個映射表并在 JOIN 中使用該映射表,如下所示:
DECLARE @table table(y3 int, DDT char(4), EXT int)
DECLARE @tableExtMapping table (DDT char(4), DDT_EXT int)
insert into @table
values
(12 ,'000A', 35)
,(15 ,'000B', 40)
,(16 ,'000A', 12)
,(11 ,'000A', 30)
insert into @tableExtMapping
values ('000A',100),('000B',200);
SELECT t.*, e.DDT_EXT
FROM @table as t
INNER JOIN @tableExtMapping as e
ON e.DDT = t.DDT
| y3 | 滴滴涕 | 分機 | 滴滴涕_EXT |
|---|---|---|---|
| 12 | 000A | 35 | 100 |
| 15 | 000B | 40 | 200 |
| 16 | 000A | 12 | 100 |
| 11 | 000A | 30 | 100 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/313268.html
標籤:sql sql-server 查询语句
