Я пытаюсь создать динамический свод, который объединяет в одном представлении несколько операторов из 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
списки)