Reputation: 391
I have a table like this:
LV1 | LV2 | LV3
A | B |C
X |Y |Null
I want to add a column to get the bottom level,
LV1 | LV2 | LV3 |Bottom
A | B |C |C
X |Y |Null |Y
How should I do that? - I am using SQL Server
Thanks
Upvotes: 2
Views: 62
Reputation: 5893
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
output
LV1 LV2 LV3 Bottom
A B C C
X Y NULL Y
Upvotes: 3
Reputation: 4192
use CTE to get your result :
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
Upvotes: 2
Reputation: 21657
You should create a function and then call this function for the default value:
alter table yourTable
add constraint
df_Bottom_Default
default([dbo].[your_udf_function]())
for Bottom
Upvotes: 0