Агрегатная функция с логическими значениями в сводке SQL Server - PullRequest
0 голосов
/ 30 апреля 2019

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

Я сделал это, используя T-SQL, и мне не удается агрегировать логические значения без искажения данных.

Существует соединение с уникальным идентификатором, поэтому у меня есть только один оператор каждый раз, так что это не реальное агрегирование, поэтому я использую min (целое число), мин (строка) и так далее ... Но мин, или макс, или сумма, или что-то еще здесь не сработает.count () работает (я имею в виду не сбои), но, как я уже сказал, конечно, портит.

Я пытался привести к целочисленному типу, но SQL Server, похоже, не оценивает это внутри PIVOT.То же самое для другого синтаксиса, который я не совсем понимаю, как sign().

В КОДЕ НИЖЕ

Я показываю как можно меньше, @colsBool и @crochBoolявляются динамически создаваемыми списками столбцов, я на 100% уверен, что проблема связана с агрегатной функцией (здесь это COUNT).

select 
    elem_id, ' + @colsBool+'
from
    (select 
         elem_id, cri_nom, data_data_bool
     from 
         VUE_ELEM_DATA_PILE
     where 
         varcri_libelle = ''bool'') dataSrc5
pivot 
    (COUNT(data_data_bool) for cri_nom IN ('+@crochBool+')

Подводя итог:

VUE_ELEM_DATA_PILE выглядит так

elem_id cri_nom data_data_bool
------------------------------
1       foo     0
1       bar     1

Ожидаемые результаты:

elem_id foo bar
---------------
1       0   1

Фактические результаты (с COUNT)

elem_id foo bar
---------------
1       1   1

(foo и bar в @colsBool и @crochBool списки)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...