次のクエリがあります。
SELECT *
FROM vendors_parts INNER JOIN
vendors ON vendors_parts.vendor = vendors.vendor_id
WHERE (vendors_parts.vendor = @vendor_id) AND (vendors_parts.active = @active) OR
(vendors_parts.vendor = @vendor_id) AND (vendors_parts.active = @inactive)
ORDER BY vendors_parts.old_id, vendors_parts.vendor_part, date_start DESC, vendors_parts.active DESC
次の形式でデータを返します。
vendor_part active old_id
b 1 1
a 0 1
a 0 1
b 0 1
x 1 3
z 1 5
c 1 20
c 0 20
私の質問は、vendor_part の昇順とアクティブな降順を並べ替えながら、old_id をまとめて保持するにはどうすればよいですか? 私が望む出力は次のとおりです。
vendor_part active old_id
b 1 1
a 0 1
a 0 1
b 0 1
c 1 20
c 0 20
x 1 3
z 1 5
old_id でグループ化するサブクエリも試しましたが、これにより、一意の old_id が 1 つだけに制限されます。
SELECT *
FROM
(
SELECT * FROM vendors_parts INNER JOIN vendors ON vendors_parts.vendor = vendors.vendor_id
WHERE (vendors_parts.vendor = @vendor_id) AND (vendors_parts.active = @active) OR (vendors_parts.vendor = @vendor_id) AND (vendors_parts.active = @inactive)
GROUP BY vendors_parts.old_id
) temp_table
ORDER BY vendor_part
グループ化され、それぞれのグループ内で vendor_part によってアルファベット順にソートされたすべての old_id を表示するにはどうすればよいですか?
ありがとうございました