SQL Server를 사용하고 있으며 설정이 true 인 경우에만 몇 개의 열로 그룹화해야합니다.SQL Server GROUP BY NULL
DECLARE @setting tinyint
SET @setting = 0
SELECT col1 FROM table1
GROUP BY col1,
CASE WHEN @setting = 1 THEN col2 ELSE NULL END
또는 내가 항상 설정이 설정되어있는 경우가 그룹에 사용 COL1 기본합니다, 그래서 코드가 실제로 NULL을 사용하여 작동합니까
CASE WHEN @test = 1 THEN col2 ELSE col1 END
될 것이지만, 내가 할 수있는 올바른 사용법임을 입증하기 위해 인터넷에서 예제를 찾지 못했습니다.
fwiw, 첫 번째 코드 블록이 내게 적합 해 보이며이 패턴을 여러 번 사용했습니다. –
논리적으로 group by는 'GROUP BY col1, col2' 일 수 있습니다. 왜냐하면'@setting'이'0'이면'col1'에서 비교할 수있는 모든 값은 어떤 순서로든 반환 될 수 있습니다. 명령은'col2'에 의해 명령 된 것과 같습니다. –