摺疊資料列群組
可以建立一種查詢結果,其中各結果資料列對應至原始資料的整組資料列。 摺疊資料列時,請注意下列事項:
您可以排除重複的資料列:有些查詢建立的結果集中會產生許多完全相同的資料列。 例如,您可能建立一個結果集,其中每個資料列都包含城市以及某個城市 (含有一個作者) 所在的州名 -- 但如果某個城市含有數個作者,則將產生數個相同的資料列。 產生的 SQL 將如下所示:
SELECT city, state FROM authors
上述查詢產生的結果集並不是很有用。 如果某個城市含有四個作者,該結果集將包含四個完全一樣的資料列。 由於結果列不包含城市和州以外的資料行,因此無法進一步對這些完全相同的資料行做區分。 要避免這種重複的資料列,將其他可區分這些資料列的其他資料行納入結果集。 例如,如果您納入作者名稱,就會變成不同的資料列 (假設任何一個城市中並沒有兩個名稱相同的作者)。 產生的 SQL 將如下所示:
SELECT city, state, fname, minit, lname FROM authors
當然上述查詢只可排除這類問題徵狀,但無法真正解決問題本身。 也就是說,雖然該結果集中沒有重複資料列,但它再也不是城市的結果集了。 若要排除原始結果集中的重複資料列,但同時仍然保有每個說明城市的資料列,您可以建立僅傳回不同資料列的查詢。 產生的 SQL 將如下所示:
SELECT DISTINCT city, state FROM authors
如需排除重複資料列的詳細資訊,請參閱 如何:排除重複的資料列。
您可以計算資料列群組:也就是說,您可以摘要說明資料列群組的資訊。 例如,您可以建立結果集,其中每個資料列都含有城市和含有某位作者的城市所在州名,以及該城市所含之作者數目。 產生的 SQL 將如下所示:
SELECT city, state, COUNT(*) FROM authors GROUP BY city, state
如需計算資料列群組的詳細資訊,請參閱摘要查詢結果以及查詢結果的排序和群組。
您可以使用選取準則來包含資料列群組:例如,您可以建立結果集,其中每個資料列都包含城市和含有數位作者的城市所在州名,以及該城市所含之作者人數。 產生的 SQL 將如下所示:
SELECT city, state, COUNT(*) FROM authors GROUP BY city, state HAVING COUNT(*) > 1
如需套用選取準則於資料列群組的詳細資訊,請參閱 如何:指定群組的條件以及 如何:在相同查詢中使用 HAVING 和 WHERE 子句。