我有一个查询从条件满足的表中选择列,问题是这个逻辑被重复多次(每个列需要一次),并想知道是否有更好的这样做的方式。TSQL - CASE WHEN语句的多个别名
SELECT
CASE
WHEN (date1 IS NULL) THEN [date2]
WHEN (date1 IS NOT NULL OR (date1 IS NOT NULL AND date2 IS NOT NULL)) THEN [date1]
ELSE ''
END AS selectedDate
//Repeat above statement for [day], [hour], [minute]
我想知道,如果它能够聚合与分离的别名用同一语句许多这样的case语句,因为它们都依赖于相同的条件,而不是多次重写相同的语句为每列,为例如,我尝试了以下内容:
SELECT
CASE
WHEN (date1 IS NULL) THEN [date2] as "selectedDate", [day2] as "day", [hour2] as "hour", [minute2] as "minute"
WHEN (date1 IS NOT NULL OR (date1 IS NOT NULL AND date2 IS NOT NULL)) THEN [date1] as "selectedDate", [day1] as "day", [hour1] as "hour", [minute1] as "minute"
ELSE ''
你可以编写一个函数来保存CASE逻辑,只要提供你的日期,如果它应该失控。 – Jens
@Jens我在想,但ID必须通过列作为参数,而不是价值wouldnt我? –