1

SQL テーブルがあるとします。レコードを含む table1 は次のようになります。

id1    id2     status    value
A     A123     VN        1
A     A234     AB        2
B     B123     VN        3
B     B321     AB        4
C     C324     AB        5

ステータスがVNであるid1、id2、および同じid1を共有するレコードの最大値を取得したいと考えています。

この場合、出力は次のようになります。

id1    id2     status    value
A     A123     VN        2
B     B123     VN        4

クエリの書き方がよくわかりません。助けていただければ幸いです。

これが私がこれまでに行ったことです。

select
    test1.*
from test1 
inner join
(select 
    part_id 
from table1
where status = 'VN') a
on test1.id1 = a.id1;

そして、私はこれを得ることができましたが、グループと最大(値)を正しく行う方法がわかりません:

id1    id2     status    value
A     A123     VN        1
A     A234     AB        2
B     B123     VN        3
B     B321     AB        4
4

2 に答える 2

4

簡単な方法の 1 つは、相関サブクエリを使用して最大値を取得することです。

SELECT id1, id2, status, 
  (SELECT MAX(value) FROM test1 t2 WHERE t1.id1 = t2.id1) value 
FROM test1 t1
WHERE status = 'VN'

でテストする SQLfiddle

于 2013-09-16T20:48:36.770 に答える
0

質問が不明確ですが、これが役立つと思います。

SELECT T1.id1, T1.id2, T1.status, T2.value
FROM tbl T1
JOIN
(SELECT id1, MAX(value) value FROM tbl GROUP BY id1) T2
ON T1.id1 = T2.id1
WHERE status = 'VN'
于 2013-09-16T20:47:16.560 に答える