0
我知道我的問題不是來自它的標題清楚,但我被困在複雜的情況下 我的表輸出是SQL查詢來獲取前行比較時根據其他列
+----+-------------+-----------+-------------------------+-------------------------+
| Id | personCount | StatusId | MinStartTime | MinEndTime |
+----+-------------+-----------+-------------------------+-------------------------+
| 1 | 3 | 1 | 2014-02-20 07:03:50.137 | 2014-02-20 07:38:33.400 |
| 2 | 3 | 8 | 2014-02-20 07:13:08.327 | 2014-02-20 07:21:28.697 |
| 3 | 3 | 2 | 2014-02-20 07:25:06.257 | 2014-02-20 07:47:32.507 |
| 4 | 4 | 1 | 2014-02-20 07:38:33.400 | 2014-02-20 12:03:03.550 |
| 5 | 4 | 2 | 2014-02-20 07:47:32.507 | 2014-02-20 08:02:10.707 |
| 6 | 4 | 8 | 2014-02-20 08:16:32.370 | 2014-02-20 11:11:02.900 |
| 7 | 4 | 8 | 2014-02-20 11:52:12.777 | 2014-02-20 12:03:03.550 |
| 8 | 0 | 1 | 2014-02-20 12:03:03.550 | 2014-02-21 05:22:45.287 |
| 9 | 2 | 1 | 2014-02-21 05:22:45.303 | 2014-02-25 10:47:22.590 |
+----+-------------+-----------+-------------------------+-------------------------+
現在,如果你看一下在Id = 4行,其狀態爲1,前一行id = 3狀態爲2. 由於第三行是Endtime大於第四行開始時間
所以我想比較第四行的人數與它的前一行的狀態ID是1即。身份證= 1,如果人數少於我想更新人數= 4行人數爲4-3即。 1
希望我已經很容易理解。
現在我可以得到上一行與自聯接和比較值,但隨後我怎麼可以比較其以前的一行值,其中狀態ID爲1
查詢我使用來獲得上一行在這種情況下
select tnext.Id,tnext.personCount
from @TableDataStatus t join
@TableDataStatus tnext
on t.id = tnext.id - 1 and
t.StatusId = 2 and
tnext.StatusId = 1 and
CONVERT(char(16),tnext.MinStartTime,120)<CONVERT(char(16),t.MinEndTime,120)
將返回我的ID = 4這是現在我如何與上一行與狀態ID = 1
我看了你的解釋幾次,但它是非常混亂。你能解釋一下這項手術試圖完成什麼嗎? – Seano666
除了@ Seano666請求之外,如果您可以發佈此示例輸入的示例輸出,它將有助於使事情更清晰。 – Mureinik
你爲什麼要把datetime轉換爲char? – Rodion