2012-10-04 586 views
4

我有這樣的查詢:GROUP-BY表達式必須包含至少一個列不是外部引用

SELECT 
SolutionName -- Solution_NAM 
from Table_View 
Group By 1 

其中Table_View是當然的圖。 我得到這個錯誤信息:

每個GROUP BY表達式都必須包含至少一個不是外部引用的列。

你能幫我解決嗎? It's內的MS SQL Server 2008

+1

你想做什麼?您無法按SQL Server中的列順序進行分組。您需要指定名稱。 –

回答

3

你不能給組由1

嘗試

SELECT 
SolutionName -- Solution_NAM 
from Table_View 
Group By SolutionName 
+0

thx,它的工作原理! – Dantes

0

馬丁的約GROUP BY語句是正確的,雖然你>可以<絕對使用列序號,而不是在一個ORDER BY中,在各種版本的SQL中(我在考慮TSQL,這是大多數核心SQL語法中的ISO標準)中的列名。

但明智的做法是不要在ORDER BY語句中使用列序號,即使它們有效。爲什麼?如果查詢是存儲過程的一部分,並且通過將列添加到原始表(或視圖)來更改表模式,則不能保證原始列順序將被更改保留。這意味着你可能會被一個意想不到的毫無意義的專欄排序,然後會破壞你的申請。

這是更好的做法,每次使用列名而不是序號(雖然像count(*),但不要掛上它,如果它臨時查詢自己的使用,永遠不會看到生產日)。

相關問題