gpt4 book ai didi

sql - 如何获取具有相同 ID 的第 n 组两行

转载 作者:行者123 更新时间:2023-12-04 23:47:25 26 4
gpt4 key购买 nike

在 SQL 2005 中,我有一个 View ,其中包含具有相似数据(按 UnitID 排名)的行对,我需要获取每 100 对,我该怎么做?我使用以下查询来接近我需要的,但它的排名是每隔一个数字(1、3、5、7、9 等...但希望它是(1、2、3、4、5等)

SELECT * FROM
(
SELECT (RANK() OVER (ORDER BY UnitID)) t,
TestID, UnitID, Passed, Title
FROM v100thCTS
) q
ORDER BY t

这给了我以下结果:

t     TestID        UnitID     Title 
------------------------------------
1 203430627 18523393 Vout 1
1 203430628 18523393 Vout 2
3 203430729 18523403 Vout 1
3 203430730 18523403 Vout 2
5 203430751 18523405 Vout 1
5 203430752 18523405 Vout 2
7 203430773 18523407 Vout 1
7 203430774 18523407 Vout 2
9 203430864 18523416 Vout 1
9 203430865 18523416 Vout 2

我没有迭代到 100 多条记录,但解决方案必须应用于大于或小于 100 的任意数量的行。在这种情况下,如果我想要每第二对,那么我的输出将是:

t     TestID        UnitID     Title 
------------------------------------
3 203430729 18523403 Vout 1
3 203430730 18523403 Vout 2
7 203430773 18523407 Vout 1
7 203430774 18523407 Vout 2

最佳答案

应该这样做:

SELECT * FROM (
SELECT DENSE_RANK() OVER (ORDER BY UnitID) tGroup, TestID, UnitID, Title
FROM v100thCTS
) q
WHERE tGroup % 2 = 0

输出:

| TGROUP |    TESTID |   UNITID |  TITLE |
|--------|-----------|----------|--------|
| 2 | 203430729 | 18523403 | Vout 1 |
| 2 | 203430730 | 18523403 | Vout 2 |
| 4 | 203430773 | 18523407 | Vout 1 |
| 4 | 203430774 | 18523407 | Vout 2 |

fiddle here .

请注意,输出具有更正的组,并且您所说的输出实际上不是根据您的要求所期望的输出:)

关于sql - 如何获取具有相同 ID 的第 n 组两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20363015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com