Функция SQL Aggregate основана на 1 столбце и отображает оставшиеся - PullRequest
1 голос
/ 02 апреля 2019

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

В основном, если данные выглядят так:

Column1   Column2 Column3 Column4
----------------------------------
Col1Data0  Test1   Test2      1
Col1Data0  Test1   Test2      3
Col1Data1  Test1   Test2      2
Col1Data1  Test1   Test2      5

Запрос должен вывести:

Column1   Column2 Column3 Column4
Col1Data0  Test1   Test2      4
Col1Data0  Test1   Test2      4
Col1Data1  Test1   Test2      7
Col1Data1  Test1   Test2      7

Ответы [ 3 ]

5 голосов
/ 02 апреля 2019

Вы можете использовать функцию окна SUM:

Тестовые данные:

declare @t table (Column1 varchar(10), Column2 varchar(10), Column3 varchar(10), Column4 int)
insert into @t values 
('Col1Data0','Test1','Test2',1),
('Col1Data0','Test1','Test2',3),
('Col1Data1','Test1','Test2',2),
('Col1Data1','Test1','Test2',5)

Запрос:

SELECT Column1, Column2, Column3, 
    SUM(Column4) OVER (PARTITION BY Column1) AS SumColumn4
FROM @t

Возвраты:

Column1     Column2 Column3 SumColumn4
Col1Data0   Test1   Test2   4
Col1Data0   Test1   Test2   4
Col1Data1   Test1   Test2   7
Col1Data1   Test1   Test2   7
1 голос
/ 02 апреля 2019

использовать скалярный подзапрос

select Column1,Column2,Column3,
(
 select sum(Column4) from tablename b 
 where a.Column1=b.Column1 and a.Column2=b.Column2 and a.Column3=b.column3
) as column4
from tablename a
1 голос
/ 02 апреля 2019

Вы можете использовать подзапрос, чтобы получить сумму для столбца 1, и присоединиться к ней, чтобы получить вывод

Select a.Column1,a.Column2,a.Column3,b.summ 
FROM Table a
INNER JOIN (Select column1,sum(Column4) summ from Table group by column1) b
on b.column1 = a.column1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...