【发布时间】:2014-08-27 07:47:58
【问题描述】:
我有这个数据库:
╔═════════╦══════╦══════════╦═══════════╦════╦═════════╗
║ ID_Elab ║ Step ║ ID_Progr ║ ID_Causal ║ GI ║ Minutes ║
╠═════════╬══════╬══════════╬═══════════╬════╬═════════╣
║ 8 ║ 1 ║ 8 ║ 19 ║ 0 ║ 480 ║
║ 8 ║ 2 ║ 1391 ║ 19 ║ 0 ║ 480 ║
║ 8 ║ 3 ║ 1781 ║ 19 ║ 0 ║ 480 ║
║ 10 ║ 1 ║ 10 ║ 50 ║ 0 ║ 480 ║
║ 10 ║ 1 ║ 43 ║ 14 ║ 0 ║ 210 ║
║ 10 ║ 2 ║ 99 ║ 50 ║ 0 ║ 480 ║
║ 10 ║ 2 ║ 100 ║ 14 ║ 0 ║ 210 ║
║ 10 ║ 3 ║ 124 ║ 50 ║ 0 ║ 480 ║
║ 10 ║ 3 ║ 125 ║ 72 ║ 0 ║ 120 ║
║ 10 ║ 3 ║ 126 ║ 73 ║ 0 ║ 90 ║
║ 11 ║ 1 ║ 8 ║ 19 ║ 0 ║ 480 ║
║ 11 ║ 2 ║ 1391 ║ 19 ║ 0 ║ 480 ║
╚═════════╩══════╩══════════╩═══════════╩════╩═════════╝
我需要检查每组 ID 中较大的 Step 值,然后选择具有该 Step 值的特定组的每一行。
上表将变为:
╔═════════╦══════╦══════════╦═══════════╦════╦═════════╗
║ ID_Elab ║ Step ║ ID_Progr ║ ID_Causal ║ GI ║ Minutes ║
╠═════════╬══════╬══════════╬═══════════╬════╬═════════╣
║ 8 ║ 3 ║ 1781 ║ 19 ║ 0 ║ 480 ║
║ 10 ║ 3 ║ 124 ║ 50 ║ 0 ║ 480 ║
║ 10 ║ 3 ║ 125 ║ 72 ║ 0 ║ 120 ║
║ 10 ║ 3 ║ 126 ║ 73 ║ 0 ║ 90 ║
║ 11 ║ 2 ║ 1391 ║ 19 ║ 0 ║ 480 ║
╚═════════╩══════╩══════════╩═══════════╩════╩═════════╝
我尝试关注this question,这是我的查询结果:
SELECT *
FROM testVela a
JOIN (
SELECT ID_Elab, MAX(Step) AS Step, ID_Progr, ID_Causal, GI, Minutes
FROM testVela
GROUP BY ID_Elab, ID_Progr, ID_Causal, Minutes
) b
ON a.ID_Elab = b.ID_Elab AND a.Step = b.Step
但是这个查询返回的东西完全错误……我该怎么办?
【问题讨论】:
-
结果如何?
-
只是原始的,每个 Step 值都设置为最大值...
标签: sql sql-server