Возвращает жестко закодированное значение, если набор результатов соответствует набору условий (T-SQL-2000) - PullRequest
0 голосов
/ 28 июня 2011

Этот вопрос относится к T-SQL, совместимому с MSSMS 2000.

Предположим, что результирующий набор запроса Q всегда возвращает один столбец с 0, 1 или n записями. Я хочу, чтобы суперзапрос W возвращал значение 1, если выполняются следующие условия:

  1. Только одна запись была получена в подзапросе Q
  2. Одна найденная запись - 'c'

Q = ВЫБЕРИТЕ DISTINCT status_code ОТ студента

W (Q) =?

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Если Q - это общий запрос, а не обязательно тот, который задан в вашем вопросе, то вместо column будет поставлено status_code:

CASE WHEN  (SELECT COUNT(*) FROM Q) = 1
       AND (SELECT COUNT(*) FROM Q WHERE column='c') = 1
     THEN 1
     ELSE 0
END
0 голосов
/ 28 июня 2011

Попробуйте:

select if(count(*)=1 and status_code='c',1,0) as W from Student

(Если у вас есть 2 строки с status_code='c', он вернет 0. Это ожидаемый результат?)

...