我想选择具有不同d
(以及P
,dw
)的行,请参阅下面的示例表:
Bezeichnung Norm d P dw
--------------------------------------
M14 x 130 ISO 4014 14 2 19,15
M14 x 140 ISO 4014 14 2 19,15
M18 x 70 ISO 4014 18 2,5 24,85
M18 x 80 ISO 4014 18 2,5 24,85
M22 x 220 ISO 4014 22 2,5 31,35
M22 x 90 ISO 4014 22 2,5 31,35
M36 x 340 ISO 4014 36 4 51,11
M36 x 140 ISO 4014 36 4 51,11
M20 x 100 ISO 4014 20 2,5 27,7
M20 x 110 ISO 4014 20 2,5 27,7
期望的结果是:
Bezeichnung Norm d P dw
--------------------------------------
M14 x 130 ISO 4014 14 2 19,15
M18 x 70 ISO 4014 18 2,5 24,85
M22 x 220 ISO 4014 22 2,5 31,35
M36 x 340 ISO 4014 36 4 51,11
M20 x 100 ISO 4014 20 2,5 27,7
我不关心返回哪个Bezeichnung
列值。什么是必需的SQL?
答案 0 :(得分:2)
您需要对要分组的值GROUP BY
,然后在其他列上使用聚合函数,例如MIN
或MAX
SELECT MAX(Bezeichnung)
,MAX(Norm)
,d
,P
,dw
FROM YourTable
GROUP BY d, P, dw
答案 1 :(得分:0)
这取决于您是否需要Bezeichnung和Norm列来自同一行。在你的样本数据中,它并不重要,因为所有的Norm值都是相同的,但是如果你有不同的Norm值,那么如果你有一行的Bezeichnung值和另一行的Norm值那么重要吗?如果您根本不关心这些列包含的内容,那么您可以完全忽略它们,只需:
SELECT DISTINCT d, P, dw FROM myTable
如果你想查看Bezeichnung值和Norm值,但如果这些值来自同一行并不重要,那么来自@ dan-field的答案就可以了。
如果你想获得总是来自同一行的Bezeichnung和Norm值,那么你需要:
;with Results as
(select ROW_NUMBER() Over (Partition By d, P, dw) rownum, *
from myTable)
select Bezeichnung, Norm, d, P, dw from Results where rownum = 1