嗚嗚......與標準的SQL替代建議的RNK
。 有一個CODE_WEIGHT
表如:
CODE WEIGHT
T 3
E 2
F 1
然後組查詢由人(如果這是分組標準),並選擇包含max(weight)
的不同的碼。
我會在一兩分鐘後的查詢。
UPDATE
好吧,抱歉的延遲。
下面是使用以前聲明表和@Randy招一個解決方案:
SELECT
pp.person, decode(max(c.weight), 3, 'T', 2, 'E', 1, 'F', '') code
FROM
person pp INNER JOIN code_weight c on (pp.code = c.code)
GROUP BY
pp.person
ORDER BY
person DESC;
我敢肯定有一種方法來轉儲甲骨文專有的功能和得到的東西在純SQL做...無論如何,因爲您已經要求提供Oracle解決方案了。
更新2
而且如許,這裏是最好的標準SQL版本,我能想出:
SELECT
p.person, c.code
FROM
(
SELECT
pp.person, MAX(cc.weight) weight
FROM
person pp INNER JOIN code_weight cc ON (pp.code = cc.code)
GROUP BY
pp.person
) p INNER JOIN code_WEIGHT c ON (p.weight = c.weight)
ORDER BY
p.person DESC;
有點兒醜與兩個加入......但它確實沒有專有擴展的工作。任何SQL大師都知道如何優化它?
乾杯,
刪除?我想他想查詢最高排名,而不是刪除數據。 –
嗯..我解釋TRIM意味着擺脫...也許不是.. – Randy
正確我不想刪除 - 只需要返回表中的每個人的結果。如果一個人列出的次數不止一次,而是返回「代碼」排名最高的記錄。我可以看到「修剪」可能會產生誤導。 – dscl