나는이 보이는 테이블이로부터 처음 2 별개의 null 이외의 값을 포함하려고 :행을 선택하고 4 열
CREATE TABLE [Test].[dbo].[MyTest]
(
[Id] INT NOT NULL,
[ColA] VARCHAR(255) NULL,
[ColB] VARCHAR(255) NULL,
[ColC] VARCHAR(255) NULL,
[ColD] VARCHAR(255) NULL
);
과의 내가 있다고 가정 해 봅시다 :
Id ColA ColB ColC ColD
---------------------------------------
1 A B NULL C
2 A A NULL D
3 NULL A B NULL
4 B B B B
5 NULL NULL NULL NULL
내가 이 테이블의 모든 행을 선택하지만 ColA-ColD의 첫 번째 2 개의 고유 한 null이 아닌 값만 순서대로 선택하면됩니다. 즉, 한 행에 대해 ColA & ColB가 모두 null이 아니며 서로 구별되는 경우 해당 행에 대해 원하는 행 수가 2입니다. 내가 위에서 준 데이터를 사용하여이 쿼리에서 원하는 결과는 다음과 같습니다 행에 대한 콜라-D에 대한 모든 데이터가 NULL 인 경우 행이 선택되어 있지 않은지 것을
가1, A (from ColA), B (from ColB)
2, A (from ColA), D (from ColD)
3, A (from ColB), B (from ColC)
4, B (from ColA)
알 수 있습니다. 또한 ID가 4 인 결과 행에서 볼 수있는 null이 아닌 별개의 열이 1 개인 경우에도 괜찮습니다. 2 일 필요는 없지만 이상적으로는 2가됩니다.
기본적으로 이상적입니다. ColA-ColD에서 TOP (2) DISTINCT를 얻을 수있는 곳은 어디에도 없지만 행에 TOP 및 DISTINCT 작업이 있음을 알았습니다. 어떤 도움이라도 대단히 감사합니다.
감사합니다.
'두 번째 칼럼이 두 번째 비 - null 값입니다. '- 처음에는 당신이 null을 포함 할 것이라고 생각 했었습니다 (실제 값과 구별 될 것입니다). 그리고 cte에서 null 전용 행을 필터링 할 수도 있습니다. –
@ X-Zero : SQL 구문에서 "뚜렷한"점에는 'NULL'값이 포함됩니다. 나는 그에 대한 설명을 명확히했다. –
Brilliant! 이것은 많은 중첩 된 COALESCE 명령문보다 더 잘 수행되어야합니다. (나 역시이 경로에서 직접 그것에 대해 생각하기 시작했고 Mark에게 대답을 정말 고맙게 생각합니다.) 정말 고마워!! – fogwolf