SQL запрос - группировка по префиксу строки - PullRequest
0 голосов
/ 03 июня 2019

Я борюсь с групповым запросом.У меня есть простая таблица с именем CarParts, в которой хранятся некоторые автомобильные элементы.Некоторые из этих элементов доступны (с префиксом типа "05"), а некоторые заблокированы (префикс типа "01").

Я хочу написать запрос выбора, который бы группировал мою таблицу CarParts по SerialNr и Type, как показаносправа внизу.

enter image description here

Ответы [ 4 ]

1 голос
/ 03 июня 2019

Хотите условную агрегацию?

select serialnr, name,
       sum(case when type like '%-05' then amount else 0 end) as [05-available],
       sum(case when type like '%-01' then amount else 0 end) as [01-blocked]
from carparts
group by serialnr, name;
0 голосов
/ 03 июня 2019
select SerialNr, 
       sum(case when Type  like '%-05' then Amount  else 0 end) as '05-available',
       sum(case when Type like '%-01' then Amount else 0 end) as '01-blocked',
       Name
from carparts
group by SerialNr, Name
0 голосов
/ 03 июня 2019

вы можете использовать случай, когда

select SerialNr,Name,
   sum(case when right([Type],2)='01' then amount else 0 end) as blocked_01
   sum(case when right([Type],2)='05' then amount else 0 end)  as availabe_05
   from tbale_name group by SerialNr,Name 
0 голосов
/ 03 июня 2019

Вы можете использовать PIVOT, чтобы получить желаемый результат, как показано ниже -

SELECT SerialNr,
ISNULL([05-Available],0) [05-Available],
ISNULL([01-Available],0) [01-Available],
Name 
FROM
(
SELECT SerialNr,Amount,Name,RIGHT( Type,2) +'-Available' AS P_Column
FROM CarParts
) AS P
PIVOT
(
    SUM(Amount)
    FOR P_Column IN ([01-Available],[05-Available])

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