2017-01-16 6 views
0

私にこれらの結果を返すテーブルがあります。今、このためにクエリは、IDが同じときにすべてのデータを取得します

がクエリであるAddressId iは1行で最高ItemStateIDを取得したいと同じである場合には

ProcessID AddressID ItemStateID 
22    2   50 
22    3   50 
22    4   50 
22    5   50 
22    6   50 
22    7   60 
22    8   50 
22    9   50 
22    10   60 
22    11   50 
22    12   50 

...:

ProcessID AddressID ItemStateID 
22    2   50 
22    3   50 
22    4   50 
22    5   50 
22    6   50 
22    7   60 
22    7   50 
22    8   50 
22    9   50 
22    10   60 
22    10   50 
22    11   50 
22    12   50 

しかし、私が欲しいのはこれです私は現時点で使用しています:

SELECT DISTINCT 
    ProcessID, 
    AddressID, 
    ItemStateID 
FROM MMResult2 
WHERE ProcessID = 22 AND ItemStateID > 10 
ORDER BY AddressID ASC, ItemStateID DESC 
+0

使用 'グループ化AddressID'と' MAX(ItemStateID) ' –

答えて

2

あなたがしたい列でdistinctとグループを削除しますユニーク。最後の列を集計するには、あなたがGROUP BYを使用することができますmax()

SELECT ProcessID, 
     AddressID, 
     max(ItemStateID) as MaxItemStateID 
FROM MMResult2 
WHERE ProcessID = 22 
    AND ItemStateID > 10 
GROUP BY ProcessID, 
     AddressID 
ORDER BY AddressID ASC, 
     max(ItemStateID) DESC 
+0

これは説明最高と素敵を働いたものです、どうもありがとうございました。 – Pedro

0

を使用します。

SELECT 
    ProcessID, 
    AddressID, 
    MAX(ItemStateID) 
FROM MMResult2 
WHERE ProcessID = 22 AND ItemStateID > 10 
GROUP BY AddressID 
0

GROUP BYMAX機能を使用してください。

SELECT DISTINCT ProcessID, AddressID, MAX(ItemStateID) AS HighestItemStateID 
FROM MMResult2 
WHERE ProcessID = 22 AND ItemStateID > 10 
GROUP BY ProcessID, AddressID, 
ORDER BY AddressID ASC, ItemStateID DESC 
0
SELECT 
    ProcessID, 
    AddressID, 
    MAX(ItemStateID) AS ItemStateID 
FROM MMResult2 
WHERE ProcessID = 22 AND ItemStateID > 10 
GROUP BY ProcessID, AddressID 
ORDER BY AddressID ASC, ItemStateID DESC 
関連する問題