1

私は次のようにいくつかのレコードを持っているテーブルを持っています

Model            Make            Color
==================================================
Maruti 800       2008            Black
Maruti 800       2009            White
Maruti Esteem    2000            Yelow
Maruti Esteem    2010            Red

ここで、リストに最大のメーカーがあるモデル、メーカー、カラーが必要です。
このようなクエリを書いてみました

SELECT 
     Model,
     MAX(Model),
     Color
from 
     tableName
GROUP BY 
     Model,
     Color

しかし、私が望む結果は来ていません

Model            Make            Color
===================================================
Maruti 800       2009            White    
Maruti Esteem    2010            Red

しかし、結果はテーブル全体です。

MakeModelWiseが最大のレコードだけが必要です。
内部クエリ(相互関連クエリ)も試しましたが、その中でgroupbyを要求しています。

4

1 に答える 1

2

MySQL以下のクエリは、、、、...Oracleを含むすべてのRDBMSでサポートされています。SQL Server

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  Model, MAX(Make) maxMake
            FROM tableName
            GROUP BY Model
        ) b ON a.Model = b.model AND
                a.make = b.MaxMake

RDBMSがWindows機能をサポートしている場合、

SELECT  Model, Make, Color
FROM    
        (
            SELECT  Model, Make, Color,
                    ROW_NUMBER() OVER (Partition By Model ORDER BY Make DESC) rn
            FROM tableName
        ) b 
WHERE rn = 1

また

WITH lists
AS
(
    SELECT  Model, Make, Color,
            ROW_NUMBER() OVER (Partition By Model ORDER BY Make DESC) rn
    FROM tableName
) 
SELECT  Model, Make, Color
FROM    lists
WHERE rn = 1
于 2012-11-06T05:41:52.037 に答える