【发布时间】:2017-02-03 21:10:24
【问题描述】:
在 Microsoft SQL Server 中,如何根据同一列的值计算中间行数。
示例
/-----------------------------------------\
| ID ---------- Event -------- UserID ----|
| 1 ----------- START -------- 000001 ----|
| 2 ----------- START -------- 000002 ----|
| 3 ----------- END -------- 000001 ----|
| 4 ----------- PL -------- 000002 ----|
| 5 ----------- END -------- 000002 ----|
\-----------------------------------------/
考虑UserID 000002,它有 3 行,ID 是 2、4 和 5。
根据来自此link 的查询,我可以获得START 和END 时间,但是如何获取每个@ 的START 和END 之间的行数 987654328@
预期结果
/-------------------------------------------------------\
| UserID ------------------------- Row Count -----------|
| 000001 ------------------------- 2 -----------|
| 000002 ------------------------- 3 -----------|
\-------------------------------------------------------/
【问题讨论】:
-
不简单,请阅读
-
@aioracle:-您的问题不清楚...因为您告诉过“如何获取每个 USERID 的 START 和 END 之间的行数”以及您的预期结果也不同..请清楚你想要什么..?
-
在开始和结束之间意味着应该有某种方式来对行进行排序。您使用的是什么版本的 sql server?
-
一个用户可以有多个开始吗?不止一个结局?开始前的记录?结束后的记录?如果是这样,在这些情况下该怎么办?
-
正如您所说的 between 其他行,我想这里的 ID 不仅仅是一些用于识别记录的技术 ID,您还可以考虑 ID 较小的记录 previous 到具有更高 ID 的记录。这是正确的吗?
标签: sql sql-server