システム名ごとに固有のレコードを返すクエリを作成しようとしています。各グループの一番上の行を返すSQLクエリ
既存のクエリは、同じ製品が複数存在するため、各systemNameに対して複数のレコードを返します。 バージョン番号で並べ替えることはできますが、各システムのトップバージョン番号のみを保持できるようにしたいと考えています。
SELECT DISTINCT v.sysName
,v.groupName
,a.versionNumb
,b.userName
FROM table1 AS a
INNER JOIN table2 AS v ON v.sID = a.sID
INNER JOIN table3 AS b ON v.sID = b.sID
WHERE a.versionNumb LIKE '10.%'
AND v.groupName LIKE '%' + @groupVar
ORDER BY a.versionNumb DESC
は、行の値をソートして返すようにROW_NUMBER()を使用してみましたが、私は、抽出された適切なデータを取得するにはまだ100%ではないです。
助けていただけたら幸いです! MAX()
とGROUP BY
なぜ "versionNumb"列を選択していますか? 1つのシステム名に対して複数のレコードが存在する場合に、その結果として1つのレコードのみが存在する必要がある場合は、何を期待していますか? –
テーブルのスニペットを投稿してもよろしいですか? – Isaiah3015
machine1にグループ3 softwareVersion10.123 USER2 ---- machine1にグループ3 softwareVersion10.111 USER2 ---- machine2でGROUP1 softwareVersion10.111 USER4 ---- machine2でGROUP1 softwareVersion10.107 USER4 ---- machine3にグループ1 softwareVersion10.123 user5 ---- machine4グループ2ソフトウェアバージョン10111 user1 ---- machine4グループ2ソフトウェアバージョン10.100ユーザー1 –