【发布时间】:2017-12-02 07:14:05
【问题描述】:
在 MIN 函数中苦苦挣扎。需要抓取具有最小值的行上的其他值。换句话说,我有一个父项、一个子项和一个数量。我需要一个父项、子项和子项的数量。
Parent Child Value
A AB 1
A BC 2
A CD 3
B AB 4
B BC 5
B EE 6
C AB 2
C EE 4
查询应该作为结果返回
Parent Child Value
A AB 1
B AB 4
C EE 4
AB 重复是可以的(因为它是 parent 唯一的)。我的 'group by' 不起作用,我怀疑我需要使用 over by 子句和可能的 partition by...
下面的 SQL 不能 100% 工作。我认为 Min_Qty 是正确的,但是 Child 是随机的,而不是隶属于 Qty 的孩子并且得到了太多的行结果。
SELECT Parent,
Child,
MIN(Qty) OVER (PARTITION BY Child) AS Min_Qty
FROM #Temp
GROUP BY Parent, Child, Qty
【问题讨论】:
-
既然您似乎知道 OVER() 函数,为什么不直接执行 ROW_NUMBER() OVER(PARTITION BY Child ORDER BY...)?
-
不应该返回
C AB 2而不是C EE 4? -
@SQLChao 是的,部分错误。对不起。很好的收获。
标签: sql sql-server group-by ssms min