Как мне сделать подсчет a на одной и той же таблице в одной и той же строке в разных статусах
В настоящее время я пытаюсь написать sql-скрипт, который возвращал бы одну строку данных, а не несколько строк.
Я пытаюсь сделать подсчет по статусам + - 4
1.In процесс
2.Обработка
3.Завершен
4.Не удалось
в моей таблице есть следующие столбцы
Процесса
StatusId
Interfaceid
дата
проблема, с которой я сталкиваюсь, заключается в том, что возвращаемые данные возвращаются в нескольких строках, так что, например,
допустим я делаю запрос на Ineterface 1 возвращаемый результат
Interfaceid функция rownumber В завершения обработки процесса не удалось
1 1 5
2 1 9
3 1 250
4 1 50
Я хочу, чтобы результат показал
Interfaceid функция rownumber В завершения обработки процесса не удалось
1 1 5 9 250 50
сценарий, который я запускаю, находится ниже
Что я уже пробовал:
Select interfaceid, decode(statusid,1,count(*))"in process", decode(statusid,3,count(*))"processing", decode(statusid,3,count(*))"completed", decode(statusid,4,count(*))"Failed" from table a group by interfaceid,statusid
Richard Deeming
Какая СУБД и какая версия?
IsiR_19
oracle 11g
PeejayAdams
Вам нужно посмотреть на PIVOT (https://technet.microsoft.com/en-us/library/ms177410(v=sql. 105). aspx)
0x01AA
Вы группируетесь по interfaceid _and_ statusid, поэтому у вас будет столько строк, сколько разных статусов существует для одного интерфейса.