如何使用SQL Server中的数据查找最后更新的列

时间:2019-01-08 20:55:18

标签: sql sql-server tsql

我的列为

FIRST_NAME 
LAST_NAME 
MONDAY 
TUESDAY 
WEDNESDAY 
THURSDAY 
FRIDAY 
ADDRESS 
AGE 

我想从MONDAY列扫描到Friday列,然后仅从它们中找出最后一个数据加载列,例如:

  • 如果我在MONDAYTUESDAYWEDNESDAY中有数据,那么我从查询中得到的结果应该是'WEDNESDAY'

  • 如果我在MondayTuesdayWednesdayThursday中有数据,则查询结果应为Thursday

  • 如果仅在Monday中有数据,则查询结果应为Monday

2 个答案:

答案 0 :(得分:2)

如果我了解您的要求,则需要以下查询:

SELECT *,
    CASE WHEN NOT Friday IS NULL THEN 'FRIDAY'
         WHEN NOT Thursday IS NULL THEN 'THURSDAY'
         WHEN NOT Wednesday IS NULL THEN 'WEDNESDAY'
         WHEN NOT Tuesday IS NULL THEN 'TUESDAY'
         WHEN NOT Monday IS NULL THEN 'MONDAY'
         ELSE 'ALL NULLS' END AS Result          
FROM YourTable

答案 1 :(得分:1)

COALESCE最适合您的用例。

SELECT COALESCE(FRIDAY, THURSDAY, WEDNESDAY, TUESDAY, MONDAY) AS SELECTEDDAY
FROM TABLE_NAME

供参考: https://docs.microsoft.com/en-us/sql/t-sql/language-elements/coalesce-transact-sql?view=sql-server-2017