이 줄을 따라 쿼리를 작성하려고합니다.
select *
from tbl
where
col1 = 1
and col2 = 2
and col3 = 3
order by
...
;
먼저 3 가지 WHERE
조건 이 모두 일치 하는 모든 결과 (3/3)를 찾은 다음 2 조건이 일치하는 모든 결과를 (2/3), 마지막으로 하나의 조건이 일치하는 결과 (1/3)를 원합니다.
이 3 개의 결과 집합 각각은에 의해 주문되어야 (col4, col5, col6)
합니다.
단일 쿼리로 할 수 있습니까?
예를 들면 다음과 같습니다.
샘플 http://img708.imageshack.us/img708/1646/sampletableresult1.jpg
테스트 데이터를 작성하는 스크립트 :
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
가능하다면 3없이! 샘플에 참여하십시오 첫 번째 열이 3 명이지만 실제로는 그 이상
—
forX
따라서 세 조건이 모두 일치하고 두 조건이 일치하는 위치와 하나의 조건이 일치하는 모든 행을 찾고 모든 결과를 정리하여 col4, 5 및 6으로 정렬했습니다. 맞습니까?
—
Nick Chammas
그래, 나도 알아, 나는 다른 방법을 찾고 있었다. 왜냐하면 3 열 이상
—
forX
글쎄, 지금은 액세스 (내 SQL 서버 DB를 기다리고 있습니다)
—
forX
결국 SQL Server를 사용하는 경우 Express Edition을 설치하십시오 . 유료 버전으로의 업그레이드 경로를 깨끗하게 유지하고 Access의 구문 특질을 다루지 않습니다.
—
Mark Storey-Smith