1
我想我在如何高效地使用GROUP BY消除冗餘記錄方面缺少一些基本知識。我不斷地碰到看起來需要使用COALESCE的地方,除非我最好能告訴它不適用於GROUP BY。在SQL服務器中使用COALESCE(或類似的東西)和GROUP BY
例如:我有與visitID和visitBillingCode的每個組合表的表,以及其他有用的信息一起:
VisitID SearchRank1 SearchRank2 BillingID
--------------------------------------------------
1 34 NULL 3432
1 34 NULL 3467
2 27 8 3280
2 29 NULL 2903
我想,這樣我每VisitID只有一排倒塌下來。方便的是,我甚至會很樂意拿剛每當有在遊戲中多行的其他列的最大的非空值,讓我結束了這樣的事情:
VisitID SearchRank1 SearchRank2 BillingID
--------------------------------------------------
1 34 NULL 3467
2 29 8 3280
看起來這應該與像這樣得到:
SELECT VisitID,
COALESCE(SearchRank1) AS SearchRank1,
COALESCE(SearchRank2) AS SearchRank2,
MAX(BillingID) AS BillingID
FROM Db.Table1
GROUP BY VisitID
但是當我嘗試它,我得到的聚結線錯誤,我想這只是因爲我不能實際使用與集團合併。它是否正確?如果是這樣,那麼做一個有效的方法是什麼?
啊。我現在明白了爲什麼我被其他人弄糊塗了 - 我總覺得我應該避免這種解決方案,因爲如果只有NULL值,MAX/MIN會做一些奇怪的事情,但我現在看到我那是我錯了。謝謝! – neuropsych 2015-03-31 04:05:04