Хранимая процедура SQL Server 2008, несколько SELECTS возвращаются как один набор
Я хотел бы написать хранимую процедуру SQL Server 2008, которая возвращает в одной записи:
- Максимальная цена акций за год,
- Минимальная цена акций за год,
- Максимальная цена акций за месяц,
- Минимальная цена акций за месяц
Просматривая предыдущие посты, которые я пробовал select#1 UNION ALL select#2
но это возвращает две строки результата (независимо от AS) из двух столбцов, а не одну строку из четырех столбцов. (Я новичок, и поэтому не совсем уверен, что это проблема, которую не может быть проанализирован веб-сервером или веб-страницей - мой кодер сказал, что одна строка предпочтительнее - так что советы в этом отношении тоже хороши).
Временные таблицы и новая функция 2012 года также кажутся возможными, но есть ли более простой способ, который мне не хватает?
1 ответ
Вы не предоставили определения таблиц, но....
SELECT
MIN(StockPrice) MinYr,
MAX(StockPrice) MaxYr,
MIN(
CASE
WHEN MONTH(ADate) = MONTH(GETDATE())
THEN StockPrice
ELSE NULL
END
) MinMth,
MAX(
CASE
WHEN MONTH(ADate) = MONTH(GETDATE())
THEN StockPrice
ELSE NULL
END
) MaxMth
FROM Table
WHERE YEAR(ADate) = Year(GETDATE())
Это не обязательно лучший SQL для производительности (так как есть функции вокруг столбцов). Это самый простой код.