IsiR_19 Ответов: 0

Как мне сделать подсчет 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, поэтому у вас будет столько строк, сколько разных статусов существует для одного интерфейса.

0 Ответов