Menggunakan SQL Server, saya punya ...
ID SKU PRODUCT
=======================
1 FOO-23 Orange
2 BAR-23 Orange
3 FOO-24 Apple
4 FOO-25 Orange
saya ingin
1 FOO-23 Orange
3 FOO-24 Apple
Kueri ini tidak membuat saya di sana. Bagaimana saya bisa MEMILIH PERBEDAAN hanya pada satu kolom?
SELECT
[ID],[SKU],[PRODUCT]
FROM [TestData]
WHERE ([PRODUCT] =
(SELECT DISTINCT [PRODUCT] FROM [TestData] WHERE ([SKU] LIKE 'FOO-%'))
ORDER BY [ID]
sql
sql-server
tsql
distinct
mmcglynn
sumber
sumber
Jawaban:
Dengan asumsi Anda menggunakan SQL Server 2005 atau lebih tinggi, Anda dapat menggunakan CTE dengan ROW_NUMBER ():
sumber
Solusi paling sederhana adalah dengan menggunakan subquery untuk menemukan ID minimum yang cocok dengan kueri Anda. Di subquery yang Anda gunakan
GROUP BY
bukanDISTINCT
:sumber
coba ini:
EDIT
setelah OP mengoreksi output samle-nya (sebelumnya hanya memiliki SATU baris hasil, sekarang semuanya ditampilkan), ini adalah permintaan yang benar:
sumber
sumber
Saya tahu itu ditanyakan lebih dari 6 tahun yang lalu, tetapi pengetahuan masih pengetahuan. Ini adalah solusi yang berbeda dari semua di atas, karena saya harus menjalankannya di bawah SQL Server 2000:
sumber
Berikut ini adalah versi, pada dasarnya sama dengan beberapa jawaban lainnya, tetapi Anda dapat menyalin paste ke SQL Server Management Studio Anda untuk menguji, (dan tanpa menghasilkan tabel yang tidak diinginkan), berkat beberapa nilai inline.
Hasil
Saya telah mengabaikan yang berikut ...
sebagai satu-satunya bagian dari kode yang salah penulis dan bukan bagian dari pertanyaan. Tidak mungkin membantu orang yang mencari di sini.
sumber
Coba ini:
SELECT * FROM [TestData] WHERE Id IN(SELECT DISTINCT MIN(Id) FROM [TestData] GROUP BY Product)
sumber