我正在使用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,我總是通過,如果設置被設置使用組,這樣的代碼將是
CASE WHEN @test = 1 THEN col2 ELSE col1 END
它實際工作使用NULL,但我可以在互聯網上找到一個例子來證明它是正確的用法。
fwiw,你的第一個代碼塊對我來說很合適,而且我已經多次使用這個模式。 – 2012-02-13 06:37:27
從邏輯上說,你的group by可以只是'GROUP BY col1,col2',因爲如果'@ setting'爲'0',那麼在col1上比較相等的所有值都可以按任意順序返回 - 其中一個有效訂單將會像'col2'命令一樣。 – 2012-02-13 09:35:49