我有一個查詢,將選擇兩個字段,將它們分組,然後根據第二個字段的第一個結果排序結果。這兩個領域之間有一對多的關係。組由2個字段,而從其他列返回第一個值
select Product
, Material
from dbo.Files
group by Product, Material
ORDER BY Product, MIN(Material)
結果正是我們想要的。實際上,實際上有幾十個「10-001」記錄,但我們只是第一個。
Product Material
10 001
10 002
10 003
10 004
10 005
10 006
10 007
10 008
10 009
11 001
11 009
13 012
13 013
13 014
問題是當我想顯示其他列。顯然我不能選擇額外的列,除非我也將它們添加到組聲明。但是當我將它們添加到我的羣組聲明中時,它會更改結果。
這和我來的很接近。
select Product
,Material
,XXIMPORT
,Field1
,Field2
,Field3
,Field4
,Field5
from dbo.files
where Field1 is not null
group by Product
,Material
,XXIMPORT
,Field1
,Field2
,Field3
,Field4
,Field5
ORDER BY Product
, MIN(Material)
, MIN(Field1)
, MIN(Field2)
有了這些結果:
Product Material XXIMPORT Field1 Field2
10 NULL NULL OUTER DIAMETER CRITICAL FIT
10 001 5/27/15 Inside Diameter Cross Section
10 001 5/27/15 Part INSIDE DIAMETER
10 002 5/27/15 OUTER DIAMETER INSIDE DIAMETER
10 003 5/27/15 ID OD
10 003 5/27/15 TYPE (TY) Thickness (T)
10 011 5/27/15 OVERALL LENGTH THREAD SIZE
10 012 5/27/15 Height (HT) Outer Diameter (OD)
所以我知道爲什麼結果被改變......但我怎麼能告訴SQL即成剛剛返回的第一個結果發現在匹配「其他「列?例如,只有頂部的「10-001」行或頂部的「10-003」行。
一切都取決於第一個查詢的結果。基於看起來非常相似的stackoverflow上的其他帖子,我試圖把第一部分與典型結果的子查詢。我也嘗試加入表格本身並添加列,但我不能有正確的語法。