CREATE OR REPLACE VIEW saa_quarterly_prices_final1 AS
WITH last_dates AS (
SELECT
symbol,
MAX(date) AS last_date,
YEAR(MAX(date)) AS report_year,
QUARTER(MAX(date)) AS report_quarter
FROM
saa.saa_prices
GROUP BY
symbol, YEAR(date), QUARTER(date)
)
SELECT
p.symbol,
ld.last_date AS date,
p.price,
ld.report_year AS year,
ld.report_quarter AS quarter,
CASE ld.report_quarter
WHEN 1 THEN CAST(CONCAT(ld.report_year, '-03-31') AS DATE)
WHEN 2 THEN CAST(CONCAT(ld.report_year, '-06-30') AS DATE)
WHEN 3 THEN CAST(CONCAT(ld.report_year, '-09-30') AS DATE)
WHEN 4 THEN CAST(CONCAT(ld.report_year, '-12-31') AS DATE)
END AS report_date
FROM
last_dates ld
JOIN
saa.saa_prices p ON ld.symbol = p.symbol AND ld.last_date = p.date;
< /code>
Запрос : < /p>
SELECT p.* FROM saa.saa_quarterly_prices_final1 p
WHERE p.symbol IN ('600519') AND p.report_date > '2025-01-01';
< /code>
Результат запроса: < /p>
symbol, date, price, year, quarter, report_date
600519 2025-03-31 1561 2025 1 2020-03-31
600519 2025-06-30 1409.52 2025 2 2020-03-31
600519 2025-07-31 1421.67 2025 3 2020-03-31
Почему год , квартал рассчитывается правильно, но отчет_дат всегда '2020-03-31' и конфликт с тем, где оператор?
У меня есть таблица saa_prices (id, символ, цена, дата). И я создаю представление, чтобы запросить ежеквартальные цены. < /P> [code]CREATE OR REPLACE VIEW saa_quarterly_prices_final1 AS WITH last_dates AS ( SELECT symbol, MAX(date) AS last_date, YEAR(MAX(date)) AS report_year, QUARTER(MAX(date)) AS report_quarter FROM saa.saa_prices GROUP BY symbol, YEAR(date), QUARTER(date) ) SELECT p.symbol, ld.last_date AS date, p.price, ld.report_year AS year, ld.report_quarter AS quarter, CASE ld.report_quarter WHEN 1 THEN CAST(CONCAT(ld.report_year, '-03-31') AS DATE) WHEN 2 THEN CAST(CONCAT(ld.report_year, '-06-30') AS DATE) WHEN 3 THEN CAST(CONCAT(ld.report_year, '-09-30') AS DATE) WHEN 4 THEN CAST(CONCAT(ld.report_year, '-12-31') AS DATE) END AS report_date FROM last_dates ld JOIN saa.saa_prices p ON ld.symbol = p.symbol AND ld.last_date = p.date; < /code> Запрос : < /p> SELECT p.* FROM saa.saa_quarterly_prices_final1 p WHERE p.symbol IN ('600519') AND p.report_date > '2025-01-01'; < /code> Результат запроса: < /p> symbol, date, price, year, quarter, report_date 600519 2025-03-31 1561 2025 1 2020-03-31 600519 2025-06-30 1409.52 2025 2 2020-03-31 600519 2025-07-31 1421.67 2025 3 2020-03-31 [/code] Почему год , квартал рассчитывается правильно, но отчет_дат всегда '2020-03-31' и конфликт с тем, где оператор?