Estoy tratando de escribir una consulta a lo largo de estas líneas:
select *
from tbl
where
col1 = 1
and col2 = 2
and col3 = 3
order by
...
;
Quiero primero todos los resultados donde WHERE
coincidan las 3 condiciones (3/3), luego todos los resultados donde coincidan 2 condiciones (2/3), y finalmente los resultados donde coincida cualquier condición 1 (1/3).
Cada uno de estos 3 conjuntos de resultados debe ordenarse por (col4, col5, col6)
.
¿Puedo hacer eso en una sola consulta?
Por ejemplo:
ejemplo http://img708.imageshack.us/img708/1646/sampletableresult1.jpg
Script para crear datos de prueba:
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
si es posible sin 3! unirse a la muestra tiene 3 primeros col, pero en realidad, es más que eso
—
X
Por lo tanto, desea encontrar todas las filas donde coincidan las 3 condiciones, luego donde coincidan 2 condiciones, luego donde coincida cualquier condición 1 y juntar todos los resultados, ordenados por col4, 5 y 6. ¿Es correcto?
—
Nick Chammas
sí, lo sé, estaba buscando otra manera, porque son más de 3 col
—
X
bueno, por el momento es su acceso (estoy esperando obtener mi servidor SQL DB)
—
forX
Si finalmente utilizará SQL Server, instale la edición express . Ruta de actualización limpia a una versión paga y sin tener que lidiar con idiosincrasias de sintaxis en Access.
—
Mark Storey-Smith