Как выбрать более конкретное значение в TSQL
Итак, у меня есть таблица, хранящая кучу значений по умолчанию, где эти значения могут быть потенциально переопределены. Мне нужен запрос, чтобы выбрать значение по умолчанию, если оно не было найдено.
В приведенном ниже примере F1 является значением по умолчанию, если F2 равно null. Если F2 не равно null, я хочу вернуть его вместо этого.
Поэтому я могу решить эту проблему, сначала посмотрев, существуют ли определенные строки, а затем выбрав эти строки, в противном случае выбрав строки по умолчанию. Это просто кажется очень неуклюжим и повторяющимся. Есть ли способ включить все это в один запрос?
Что я уже пробовал:
DECLARE @x char = 'A' DECLARE @t TABLE ( F1 char, F2 int null ) INSERT INTO @t (F1, F2) VALUES ('A', 1) INSERT INTO @t (F1, F2) VALUES ('A', NULL) INSERT INTO @t (F1, F2) VALUES ('B', 2) INSERT INTO @t (F1, F2) VALUES ('C', NULL) IF EXISTS( SELECT * FROM @t WHERE F1 = @x AND F2 IS NOT NULL ) BEGIN SELECT * FROM @t WHERE F1 = @x AND F2 IS NOT NULL END ELSE BEGIN SELECT * FROM @t WHERE F1 = @x AND F2 IS NULL END /* This correctly returns when @x = 'A' F1 F2 ------- A 1 when @x = 'B' F1 F2 ------- B 2 when @x = 'C' F1 F2 ------- C NULL */
Gerry Schmitz
F1-это значение по умолчанию, если F2 равно нулю
Не иметь смысла.