У меня есть запрос, чтобы получить некоторые данные, но мне нужен другой результат - PullRequest
0 голосов
/ 17 марта 2020
select to_char(a.insertdatetime) as insertdatetime , b.category, count(1) as count
  from daily a
     , server b 
 where status != 'OK'
 group by b.category
         , to_char(a.insertdatetime) 
 order by to_char(a.insertdatetime)
          , b.category; 

это результат

Но я хочу, чтобы категория стала столбцом, а счет стал данными для каждой категории.

Я использую это в Oracle

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Вы можете использовать PIVOT следующим образом:

SELECT * FROM
    (
    select to_char(a.insertdatetime) as insertdatetime , b.category
    from daily a, server b where status != 'OK'
    )
PIVOT
    (
    COUNT(1) FOR category IN (1 AS "1", 2 AS "2", 3 AS "3", 4 AS "4", 5 AS "5")
    )
ORDER BY insertdatetime;

- Обновление -

Ваш исходный запрос должен содержать ' вокруг значений в предложении IN предложения PIVOT:

SELECT
    *
FROM
    (
        SELECT
            TO_CHAR(A.INSERTDATETIME) AS INSERTDATETIME,
            B.CATEGORY
        FROM
            DAILY A,
            SERVER B
        WHERE
            STATUS != 'OK'
    ) PIVOT (
        COUNT ( 1 )
        FOR CATEGORY
        IN ( 'ELASTIC' AS "ELASTIC", 'IS' AS "IS", 'IS_BPM' AS "IS_BPM", 'TC' AS "TC", 'UM' AS "UM" )
    )
ORDER BY
    INSERTDATETIME;

Cheers !!

0 голосов
/ 17 марта 2020

Тогда вам нужно сгруппировать только по b.category

select max(a.insertdatetime) as insert_date_time,
       b.category,
       count(*) as "count"
  from daily a
  join server b on b.id = a.server_id
 where status != 'OK'
 group by b.category
 order by insert_date_time, b.category;

, где

  • count - зарезервированное ключевое слово, которое должно быть заключено в кавычки.
  • может существовать только один неагрегированный столбец b.category, в этом случае
  • требуется хотя бы одно условие соединения между двумя таблицами, например b.id = a.server_id
  • , а псевдоним столбца может использоваться напрямую в списке order by
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...