Saya mencoba menulis kueri di bawah ini:
select *
from tbl
where
col1 = 1
and col2 = 2
and col3 = 3
order by
...
;
Saya ingin semua hasil pertama di mana semua 3 WHERE
kondisi cocok (3/3), lalu semua hasil di mana 2 kondisi cocok (2/3), dan akhirnya hasil di mana semua 1 kondisi cocok (1/3).
Masing-masing dari 3 set hasil ini harus dipesan oleh (col4, col5, col6)
.
Bisakah saya melakukannya dalam satu permintaan?
Sebagai contoh:
sample http://img708.imageshack.us/img708/1646/sampletableresult1.jpg
Script untuk membuat data uji:
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyTable]') AND type in (N'U'))
DROP TABLE [dbo].[MyTable]
GO
CREATE TABLE dbo.MyTable
(
col1 INT
, col2 INT
, col3 INT
, col4 INT
, col5 INT
, col6 INT
)
GO
INSERT dbo.MyTable (col1, col2, col3, col4, col5, col6)
SELECT 1,2,3,2,1,1 UNION ALL
SELECT 1,2,30,1,1,1 UNION ALL SELECT 1,20,30,1,1,1 UNION ALL
SELECT 10,20,3,1,1,1 UNION ALL SELECT 10,2,30,1,1,1 UNION ALL
SELECT 10,2,3,1,1,1 UNION ALL SELECT 10,20,30,1,1,1 UNION ALL
SELECT 1,2,3,1,1,1 UNION ALL SELECT 1,2,3,1,2,2 UNION ALL
SELECT 1,2,3,1,2,3 UNION ALL SELECT 1,20,3,1,1,1
GO
jika memungkinkan tanpa 3! bergabung dengan sampel memiliki 3 col pertama, tetapi pada kenyataannya, lebih dari itu
—
forX
Jadi, Anda ingin menemukan semua baris di mana semua 3 kondisi cocok, lalu di mana 2 kondisi cocok, lalu di mana 1 kondisi apa pun cocok dan menyatukan semua hasil, diurutkan berdasarkan col4, 5, dan 6. Apakah itu benar?
—
Nick Chammas
ya, saya tahu, saya mencari cara lain, karena lebih dari 3 col
—
forX
baik, untuk saat ini yang akses (aku menunggu untuk mendapatkan server saya db sql)
—
forX
Jika pada akhirnya Anda akan menggunakan SQL Server, instal edisi ekspres . Bersihkan jalur peningkatan ke versi berbayar dan tidak ada berurusan dengan sintaks sintaksis di Access.
—
Mark Storey-Smith