我想编写一个 SQL Server 2008 存储过程,它在一条记录中返回:
- 当年最高股价,
- 年内最低股价,
- 本月最高股价,
- 本月最低股价
回顾我尝试过的以前的帖子select#1 UNION ALL select#2
,但这会返回两列的两个结果行(不管 AS),而不是四列的一行。(我是一个菜鸟,因此不完全确定这是一个无法被网络服务器或网页解析的问题——我的编码人员说最好有一行——所以这方面的建议也很好)。
临时表和 2012 年的新功能似乎也是可能的,但我错过了更简单的方法吗?
我想编写一个 SQL Server 2008 存储过程,它在一条记录中返回:
回顾我尝试过的以前的帖子select#1 UNION ALL select#2
,但这会返回两列的两个结果行(不管 AS),而不是四列的一行。(我是一个菜鸟,因此不完全确定这是一个无法被网络服务器或网页解析的问题——我的编码人员说最好有一行——所以这方面的建议也很好)。
临时表和 2012 年的新功能似乎也是可能的,但我错过了更简单的方法吗?
您尚未提供表定义,但....
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(因为列周围有函数)。这是最简单的代码。