【发布时间】:2013-12-28 16:54:04
【问题描述】:
我正在运行查看 PatientID 和 TXNDAte 的查询,以确保他们遵守每 15 个月完成一次工作的规定。
ClientID TxnDate TxnCode Appt#
57 7/15/2010 V107 1
327 1/31/2011 V107 1
416 12/4/2010 V175 1
416 12/3/2011 V157 2
416 2/9/2013 V157 3
431 5/7/2011 V175 1
431 3/29/2012 V201 2
574 7/16/2011 V107 1
669 12/18/2010 V107 1
669 12/17/2011 V107 2
我已使用 row_Number FUnction 来获取 Appt#,现在正在寻找执行类似操作的 case 语句。
Case
When Appt# - 1 = 0 Then Null
When Appt# - 1 > 0 Then **DateDiff (from the present row and subtract the date from previous row)**.
这当然是我遇到问题的地方。有人对我如何做到这一点有任何建议吗?
谢谢,
【问题讨论】:
-
使用行号 a cte 进行查询,并在 appt# - 1 上将其与自身连接。然后您可以访问这两行。
-
什么版本的 SQL Server? SQL Server 2012 有
LAG/LEAD -
SQL Server 2008。约翰我明白,只有 2 个应用程序。 3 个或更多应用呢?
-
如果我理解你,你需要的是 lag() 函数。你可以在这里阅读:technet.microsoft.com/en-us/library/hh231256.aspx
-
Yaron- 2008 不支持滞后函数。太糟糕了,那本来很好很容易。不过还是谢谢。
标签: sql sql-server sql-server-2008 tsql row-number