Как преобразовать запрос сводной функции Oracle в запрос MySQL - PullRequest
1 голос
/ 11 декабря 2019

Пожалуйста, найдите приведенный ниже запрос, и поскольку в MySQL нет функции Pivot для использования. Пожалуйста, предоставьте MySQL запрос для того же. Пожалуйста, найдите ссылку после запроса ниже для изображения таблицы и ожидаемых данных.

SELECT
   *
FROM
   (
       SELECT
           *
       FROM
           (
               SELECT
                   X.*,
                   Y.status,
                   Y.create_date,
                   Z.x_some_id
               FROM
                   X csv
                   LEFT JOIN Y lsh ON X.id = Y.x_id
                                                          AND Y.type = 'STATUS'
                   LEFT JOIN Z vi ON X.some_id = Z.x_some_id
               WHERE
                   X.some_col = 'abc'
           ) PIVOT (
               MAX ( create_date )
               FOR status
               IN ( 'CONFIRMED',
               'UNCONFIRMED' )
           )
   )
ORDER BY
   date ASC```

 [1]: https://i.stack.imgur.com/LmNJt.png

1 Ответ

1 голос
/ 11 декабря 2019

Просто используйте условное агрегирование:

SELECT X.ID,  -- add the extra columns you want here
       MAX(CASE WHEN Y.status = 'CONFIRMED' THEN Y.create_date END) as confirmed,
       MAX(CASE WHEN Y.status = 'UNCONFIRMED' THEN Y.create_date END) as unconfirmed
FROM X LEFT JOIN
     Y
     ON X.id = Y.x_id AND 
        Y.type = 'STATUS' LEFT JOIN
     Z
     ON X.some_id = Z.x_some_id
WHERE X.some_col = 'abc'
GROUP BY X.id;  -- whatever columns you want to lead the 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...