我有一组在特定时间点发生的交易:
CREATE TABLE Transactions (
TransactionDate Date NOT NULL,
TransactionValue Integer NOT NULL
)
数据可能是:
INSERT INTO Transactions (TransactionDate, TransactionValue)
VALUES ('1/1/2009', 1)
INSERT INTO Transactions (TransactionDate, TransactionValue)
VALUES ('3/1/2009', 2)
INSERT INTO Transactions (TransactionDate, TransactionValue)
VALUES ('6/1/2009', 3)
假设 TransactionValue 设置了某种级别,我需要知道事务之间的级别。我需要在一组 T-SQL 查询的上下文中使用它,所以最好能得到这样的结果集:
Month Value
1/2009 1
2/2009 1
3/2009 2
4/2009 2
5/2009 2
6/2009 3
请注意,对于每个月,我们如何获取交易中指定的值,或者获取最新的非空值。
我的问题是我不知道如何做到这一点!我只是一个“中级”级别的 SQL 开发人员,我不记得以前见过这样的事情。自然地,我可以在程序中创建我想要的数据,或者使用游标,但我想知道是否有更好的、面向集合的方法来做到这一点。
我使用的是 SQL Server 2008,所以如果有任何新功能有帮助,我很想听听。
PS如果有人能想出一个更好的方式来陈述这个问题,甚至是一个更好的主题行,我将不胜感激。我花了很长时间才决定“传播”虽然很蹩脚,但却是我能想到的最好的。“涂抹”听起来更糟。