SQL添加一列以从另一列动态获取值

时间:2017-04-04 06:21:38

标签: sql sql-server

我有一张这样的表:

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

我想添加一列来获得最低水平,

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

我该怎么做? - 我正在使用SQL Server

谢谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

您应该创建一个函数,然后调用此函数作为默认值:

FileStream