0

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

  • 当年最高股价,
  • 年内最低股价,
  • 本月最高股价,
  • 本月最低股价

回顾我尝试过的以前的帖子select#1 UNION ALL select#2,但这会返回两列的两个结果行(不管 AS),而不是四列的一行。(我是一个菜鸟,因此不完全确定这是一个无法被网络服务器或网页解析的问题——我的编码人员说最好有一行——所以这方面的建议也很好)。

临时表和 2012 年的新功能似乎也是可能的,但我错过了更简单的方法吗?

4

1 回答 1

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

于 2015-08-19T04:38:48.303 回答