SQL - Как я могу объединить строку на основе ЛЮБОГО результата?

Я пытаюсь написать запрос, который объединяет множество строк и возвращает одно строковое значение, чтобы указать, содержит ли каждый столбец значение. Он должен проверить каждый столбец и, если столбец содержит «истинное» значение, затем объединить результат строки, чтобы указать это.

Дано (на SQL Server 2008):

      Col1 | Col2
Row1: 0      0
Row2: 0      1 

Мне нужен результат, указывающий «Col1 не имеет значения true, Col2 имеет значение true» (запятая не имеет значения).

Я предполагаю, что мне нужно объединить оператор CASE или IF с оператором ANY, но пока синтаксис ускользает от меня.


person STW    schedule 02.12.2011    source источник
comment
каковы типы данных столбцов? можем ли мы предположить, что все они логические (1 или 0), как в примере?   -  person Dmitry B.    schedule 02.12.2011
comment
@DmitryBeransky - да, все оцениваемые столбцы являются логическими   -  person STW    schedule 02.12.2011


Ответы (1)


Следующий запрос даст следующие результаты: Col1 has no true, Col2 has true для ваших данных:

SELECT CASE
          WHEN Col1Total = 0 THEN 'Col1 has no true'
          ELSE 'Col1 has true'
       END + ', ' +
   CASE
      WHEN Col2Total = 0 THEN 'Col2 has no true'
      ELSE 'col2 has true'
   END AS yourResult
FROM 
(
   SELECT SUM(Col1) AS Col1Total, SUM(Col2) AS Col2Total
   FROM yourTable
) AS t
person Adam Wenger    schedule 02.12.2011
comment
Спасибо, Адам! Он работает в моем тестовом запросе, теперь нужно расширить его до реального :) - person STW; 02.12.2011