Как добавить строку SUM(nvarchar) или COUNT в конце группы результатов?

avatar
My9to5
1 июля 2021 в 20:06
70
1
0

Я хочу добавить строки 6 и 13 к результатам.

enter image description here

SELECT
    ARPDisplayName0

FROM
    v_GS_INSTALLED_SOFTWARE
    
WHERE
    ARPDisplayName0 = 'Adobe Acrobat 9 Pro' or 
    ARPDisplayName0 = 'Bomgar'
Источник
Dale K
1 июля 2021 в 20:07
1

В соответствии с руководством по вопросам, пожалуйста, не публикуйте изображения кода, данных, сообщений об ошибках и т. д. - скопируйте или введите текст в вопрос. Пожалуйста, зарезервируйте использование изображений для диаграмм или демонстрации ошибок рендеринга, вещей, которые невозможно точно описать с помощью текста.

Dale K
1 июля 2021 в 20:08
1

Обычно это функция переднего конца.

Dale K
1 июля 2021 в 20:08
1

Отвечает ли это на ваш вопрос? Добавить итоговую строку с итоговыми значениями

My9to5
1 июля 2021 в 20:14
0

Спасибо, Дейл, я это видел. Но будет ли он добавлять его после каждого значения?

Gordon Linoff
1 июля 2021 в 20:14
1

Полностью потерян. Ваш запрос возвращает один столбец, но ваши данные имеют два. Предложение WHERE вызовет ошибку. Пожалуйста, хотя бы укажите рабочий SQL в вопросе, если он выдает набор результатов.

Dale K
1 июля 2021 в 20:15
1

@ My9to5 Проверьте документацию для rollup, чтобы увидеть.

My9to5
1 июля 2021 в 20:22
0

@Dale K Rollup определенно выглядит именно так! Теперь нужно выяснить, как СУММИТЬ/СЧИТАТЬ nvarchar

Gudwlk
1 июля 2021 в 22:39
0

Можете ли вы добавить сюда ожидаемый результат?

Ответы (1)

avatar
John Cappelletti
1 июля 2021 в 20:21
2

Мне нравится использовать Grouping Sets для таких элементов

Пример

Select ARPDisplayName0
      ,ComputerName = coalesce(ComputerName,concat('Total ',sum(1)))
 From  v_GS_INSTALLED_SOFTWARE
 Group By Grouping Sets ( 
                          (ARPDisplayName0,ComputerName)
                         ,(ARPDisplayName0)
                        )

Результаты

ARPDisplayName0 ComputerName
Acrobat         Comp1
Acrobat         Comp2
Acrobat         Comp3
Acrobat         Total 3
Bomgar          Comp1
Bomgar          Comp2
Bomgar          Total 2
My9to5
1 июля 2021 в 20:25
0

Спасибо! @YourTable — это всего лишь временная таблица, верно? INSERT INTO — это то, от чего я избегал

John Cappelletti
1 июля 2021 в 20:29
1

@My9to5 My9to5 (at)YourTable - это просто демонстрационная табличная переменная - см. обновленный ответ.

Charlieface
1 июля 2021 в 20:48
0

CASE WHEN GROUPING(ComputerName) = 1... вместо COALESCE, вероятно, лучше, так как он возвращает правильные результаты перед лицом нулей. Вы также можете добавить ORDER BY ARPDisplayName0, GROUPING(ComputerName), чтобы сделать его аккуратным

John Cappelletti
1 июля 2021 в 21:01
0

@Charlieface Справедливый комментарий. В этом случае я подозреваю, что ORDER BY имеет немного больший вес. Я не могу представить значение NULL ComputerName.

John Cappelletti
6 июля 2021 в 19:57
0

@ My9to5 Всегда рад помочь.