Как агрегировать значения в строках на основе условий и получения выходных данных в SQL? - PullRequest
0 голосов
/ 19 марта 2019

Моя таблица содержит несколько строк, которые должны быть агрегированы. Например: столбцы sites, fuel, sales, date когда дата, сайты и запас топлива совпадают, мне нужно агрегировать столбец продаж для этих строк и иметь одну строку (удалить другие строки или не выбирать эти строки, так как значения агрегируются)

Как я могу сделать это просто в запросе выбора в sql?

например

site, fuel, sale,date
siteA, Diesel, 100, 2019-01-01
SiteA, Diesel,  300, 2019-01-01
siteB ,Ulp, 200, 2019-01-01
siteC,E10, 500, 2019-01-01

Вывод должен быть;

site, fuel, sale,date
siteA, Diesel, 400, 2019-01-01
siteB ,Ulp, 200, 2019-01-01
siteC,E10, 500, 2019-01-01

Мой sql похож;

 select 
        [CompanyCode] as 'Company Code',
        [Sitecode] as 'Site Code',
        [ProductCode] as 'Product Name',
        CONVERT(date, [InvDay]) as  Date,

         SUM (CASE
                    WHEN [Sales] ='NULL' THEN 0
                     WHEN [Sales] = '' then 0
                    ELSE
                     CONVERT(decimal(10,4) ,[Sales] )
                     END) as 'Sale Volume'

    FROM [dbo].[2018-01] 

     group by Companycode,Sitecode,ProductCode,date,Sales

1 Ответ

2 голосов
/ 19 марта 2019

Использование group by и sum() агрегация

select  site, fuel, date, sum(case when sales is null or sales='' then 0 else cast(sales as decimal(10,4)) end) as sale
from tablename
group by site, fuel, date

Согласно вашему ответу - вы должны удалить колонку продаж из группы на

select 
        [CompanyCode] as 'Company Code',
        [Sitecode] as 'Site Code',
        [ProductCode] as 'Product Name',
        CONVERT(date, [InvDay]) as  Date,

         SUM (CASE
                    WHEN [Sales] is null or
                     [Sales] = '' then 0
                    ELSE
                     CONVERT(decimal(10,4) ,[Sales] )
                     END) as 'Sale Volume'

    FROM [NEO_DB].[dbo].[Caltex-migration-2018-01] 

     group by Companycode,Sitecode,ProductCode,CONVERT(date, [InvDay]) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...