在SQL Server中保留別名列的GROUP BY操作
在SQL Server中,當使用別名列執行GROUP BY操作時可能會遇到挑戰。本文探討了對別名列執行GROUP BY操作的正確語法,並檢查此語法是否也適用於CASE語句別名列。
要對別名列執行GROUP BY操作,必須在GROUP BY子句中引用用於建立別名的表達式。例如:
<code class="language-sql">SELECT LastName + ', ' + FirstName AS 'FullName' FROM customers GROUP BY LastName + ', ' + FirstName</code>
在此場景中,別名「FullName」是使用表達式「LastName ', ' FirstName」建立的。若要依此別名分組,必須指定完整的表達式:「LastName ', ' FirstName」。
此外,相同的語法可以應用於CASE語句別名列:
<code class="language-sql">SELECT CASE WHEN LastName IS NULL THEN FirstName WHEN LastName IS NOT NULL THEN LastName + ', ' + FirstName END AS 'FullName' FROM customers GROUP BY LastName, FirstName</code>
在這種情況下,CASE語句用於根據「LastName」和「FirstName」欄位的值來決定「FullName」別名的值。若要依此別名列分組,將會引用表達式「LastName ', ' FirstName」和「FirstName」。因此,GROUP BY子句可以包含:
<code class="language-sql">GROUP BY CASE WHEN LastName IS NULL THEN FirstName WHEN LastName IS NOT NULL THEN LastName + ', ' + FirstName END</code>
但是,要注意的是,當在GROUP BY操作中使用CASE語句別名列時,所有引用的列表達式都必須出現在GROUP BY子句中。這確保聚合結果有效且準確。
以上是如何通過SQL Server中的別名列(包括案例語句)正確分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!