【发布时间】:2016-03-17 18:26:40
【问题描述】:
我有一个简单的选择查询,它根据日期范围给出输出:
Declare @prevDate as Date
@prevDate = (Select Max(myDates) From Top40Table Where mydates < '2012/05/03' And PrimID=1)
Select
myDates, (P1/(Lag(P1) Over (Order by myDates))-1) As myRet
From
Top40Table
Where
(myDates Between @prevDate and '2012/05/10')
And PrimID = 1
这是一个典型的结果集:
myDates myRet
2012-05-02 NULL
2012-05-03 -0.0173786439241019
2012-05-04 -0.0268509853003636
2012-05-07 -0.00941786149400936
2012-05-08 -0.0134267235683988
2012-05-09 0.00633992501692782
2012-05-10 0.0203276794347731
选择查询是正确的,并且做了它应该做的事情,获取 prevDate 2012/05/02 以便进行计算。但我不希望在 myRet 列中有 NULL 输出的 2012/05/02 行。我可以将myDates 和myRet 数据插入到临时表(@TempTable)中,然后只选择myDates 和myRet,其中myRet 不是该表中的Null。
有没有一种更简单的方法可以做到这一点,而不必创建@TempTable,然后再创建另一个选择查询?我使用 SQL Server 2012
【问题讨论】:
标签: sql sql-server sql-server-2012