Макс функция sql в деталях - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть одна таблица, в которой в одном столбце указаны разные финансовые годы, например, 18 ФГ, 19 ФГ, 20 ФГ. Есть еще один столбец, в котором есть разные кварталы, такие как Q1, Q2, Q3 и Q4. Где Q1 = октябрь-де c, Q2 = январь-март и Q3 = апрель-июнь, а Q4 = июль-сентябрь.

Мне нужно сделать еще один столбец, в котором мне нужно увидеть последний финансовый год и текущий квартал как значение «Верно / Неверно». Например, если я хочу просмотреть данные за 10 апреля 2020 года, я должен выбрать FY20 и Q3, и в моем столбце результатов это будет «true». Можете ли вы помочь? Я написал следующий запрос. Это дает мне максимум как для FY, так и для четверти.

SELECT IF(FY = (SELECT MAX(FY) FROM `Table1`) AND  Quarter = (SELECT MAX(Quarter) FROM `Table1`), TRUE, FALSE) AS CurrentQuarter  
  FROM `Table1`

1 Ответ

0 голосов
/ 16 апреля 2020
SELECT t1.*, 
       t2.FY_Quarter IS NOT NULL AS CurrentQuarter
FROM sourcetable AS t1
LEFT JOIN ( SELECT MAX(CONCAT(FY, `Quarter`)) AS FY_Quarter
            FROM sourcetable ) AS t2 ON CONCAT(t1.FY, t1.`Quarter`) = t2.FY_Quarter

Не могли бы вы дать мне подсказки о коррелированном запросе.

Например,

SELECT t1.*, 
       NOT EXISTS ( SELECT 1
                    FROM sourcetable t2
                    WHERE CONCAT(t1.FY, t1.`Quarter`) < CONCAT(t2.FY, t2.`Quarter`) ) AS CurrentQuarter
FROM sourcetable AS t1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...