2017-04-04 115 views
2

動態獲取值我有一個這樣的表:SQL添加一列從另一列

LV1 | LV2 | LV3 
A | B |C 
X |Y |Null 

我想增加一列,以獲得最底層,

LV1 | LV2 | LV3 |Bottom 
A | B |C |C 
X |Y |Null |Y 

我應該如何去做? - 我使用的SQL Server

感謝

+0

底層手段???如果有的話,你有沒有嘗試過什麼? – Sankar

+0

是否有任何特定的條件或邏輯來獲取列值?還有,你想在你的表本身或在選擇查詢? –

+0

@茉莉花,我發佈你的問題的答案。請嘗試查詢。 – Mansoor

回答

2

使用CTE,讓您的結果:

CREATE TABLE #table(LV1 VARCHAR(10) ,LV2 VARCHAR(10) , LV3 VARCHAR(10)) 
INSERT INTO #table(LV1 ,LV2 , LV3) 
SELECT 'A','B','C' UNION ALL 
SELECT 'X','Y',null 

;WITH CTE (LV1 ,LV2 , LV3 , Bottom) AS 
(
    SELECT LV1 ,LV2 , LV3 , COALESCE(LV3,LV2,LV1) 
    FROM #table 
) 

SELECT * FROM CTE 
+0

謝謝。這COALESCE是我正在尋找! – Jasmine

0

你應該創建一個函數,然後調用這個函數的默認值:

alter table yourTable 
add constraint 
df_Bottom_Default 
default([dbo].[your_udf_function]()) 
for Bottom 
3
CREATE TABLE #table(LV1 VARCHAR(10) ,LV2 VARCHAR(10) , LV3 VARCHAR(10)) 
INSERT INTO #table(LV1 ,LV2 , LV3) 
SELECT 'A','B','C' UNION ALL 
SELECT 'X','Y',null 
SELECT LV1 ,LV2 , LV3 , COALESCE(LV3,LV2,LV1) Bottom 
FROM #table 

輸出

LV1 LV2 LV3 Bottom 
A B C  C 
X Y NULL Y