Хранимая процедура 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 для производительности (так как есть функции вокруг столбцов). Это самый простой код.

Другие вопросы по тегам