0
我在SQL Server 2000上編寫了一個複雜的查詢,其中部分包含連接到派生表上。由於底層數據與我預期的不同,這張表很不幸地沒有按照我的意願返回。說的數據是這樣的:如何查找聚合分組的列信息
USERID,OS,DATEINSTALLED
237,win,01/01/1980
237,dos,01/02/1978
237,lin,08/08/2002
132,win,03/03/1982
132,dos,03/07/2002
132,mac,03/07/2002
然後我的查詢看起來像這樣:
SELECT USERID, DATEINSTALLED = max(DATEINSTALLED)
FROM INSTALLATIONS
GROUP BY USERID
這會給出一個結果集的
237,08/08/2002
132,03/07/2002
但我需要的是一個結果集作者:
237,lin,08/08/2002
132,dos,03/07/2002
或
237,lin,08/08/2002
132,mac,03/07/2002
我不是真的fussed,如果它拿起mac或dos,但它不能給3行;因爲我需要的是每userid
一行,最大日期和該組合的「a」有效操作系統。所以mac或dos是有效的,但win不是(用戶132)。
由於它是派生表作爲更復雜的查詢的一部分,我需要儘可能保持它儘可能乾淨和簡單,因爲執行時間(源表大小爲幾十萬行)。作爲暗示的標籤,我僅限於SQL Server 2000中
因此,爲了建立我的派生表,派生表將需要派生表。我會放棄這一點,希望在接下來的一兩個小時內完成。 – Paul 2012-04-23 14:02:15
感謝您的回覆,但這不起作用。我擔心這個錯誤是我的錯,但是爲了不讓我的問題正確,我相信你的回答正確無誤。更新我的問題是我實際想要問的問題,我希望每個用戶ID有一行,並且與任何符合這兩個條件的有效操作系統進行約會。 – Paul 2012-04-23 14:27:51
把它分類到最後,真正的疑問讓我頭痛。我所做的與您的答案類似,但用「OS = MAX(OS)」替換「OS」。基本上嵌套和重複我有的原始邏輯。 – Paul 2012-04-23 15:15:06