SQL Server 2008存储过程多个SELECTS作为一个集返回

时间:2015-08-19 04:09:50

标签: sql-server sql-server-2008 stored-procedures multiple-resultsets

我想写一个SQL Server 2008存储过程,该过程在一个记录中返回:

  • 年度最高股价,
  • 年度最低股价,
  • 当月的最高股价,
  • 当月的最低股价

回顾以前的帖子我已尝试过select#1 UNION ALL select#2,但这会返回两列结果行(无论AS),而不是一列四列。 (我是noob,因此不能完全确定这是一个无法通过网络服务器或网页解析的问题 - 我的编码员说过一行更可取 - 所以这方面的建议也很棒)

临时表和2012年的新功能似乎也有可能,但有一种我更容易丢失的方法吗?

1 个答案:

答案 0 :(得分:0)

您尚未提供表格定义,但......

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(因为列周围有函数)。这是最简单的代码。