-------------------------------------
|id | date1 | date2 | date3 | date4 |
-------------------------------------
12 | 0902 | 0117 |'space'|'space'|
23 | 0407 | 0214 | 0518 |'space'|
31 | 0608 |'space'|'space'|'space'|
如何查找第一个列名称'每个id
都没有日期?
例如:对于id = 31
,我需要在查询结果中使用列名date2
。
提前致谢!
答案 0 :(得分:1)
您可以使用CASE
声明(如果您有''
而不是NULL
,则应将IS NULL
替换为= ''
):
SELECT id
, CASE WHEN date1 IS NULL THEN 'date1'
WHEN date2 IS NULL THEN 'date2'
WHEN date3 IS NULL THEN 'date3'
WHEN date4 IS NULL THEN 'date4'
END AS first_null_date
FROM tbl
答案 1 :(得分:1)
你可以使用CASE,如果你想将空间视为NULL,你还需要使用ISNULL()函数
SELECT ID,
CASE
WHEN ISNULL(date1, '') = ''
THEN 'date1'
WHEN ISNULL(date2, '') = ''
THEN 'date2'
WHEN ISNULL(date3, '') = ''
THEN 'date3'
WHEN ISNULL(date4, '') = ''
THEN 'date4'
END [COLUMN_NAME]
FROM TableName