2011-07-18 195 views
2

我有一個Select列的大列表。「Group By *」在SQL Server 2008查詢中?

要對結果進行分組,我必須獲得select子句中的所有項並放入Group By子句。

我不知道是否有任何簡單的方法來獲取所有的物品有沒有參考GROUP BY,如GROUP BY *

如何才能做到這一點?

回答

1

這裏並沒有真正的魔法彈。您必須在Group By條款中列出您正在分組的所有列。你不能使用通配符。

+0

沒有通配符。但是對於魔法子彈來說並不真實。他只是在尋找一種更簡單的方式來撰寫他的分組聲明;不要回避它。例如,如果他將他的sql複製到SSMS中的查詢設計器中,則有一個自動生成group-by語句的單擊方法。 – Chains

+0

@kuru kuru na - 我想這取決於你對魔法子彈的定義。我真的不認爲編輯器工具是神奇的子彈,因爲問題是關於SQL sntax,此外,根據您的論點對答案進行低估似乎對我來說太過矯枉過正。 – dcp

+0

他正在尋找一種簡單的方法來進行分組;如果你閱讀他的問題,他不會*只是*對句法方法感興趣 - 他只是想知道是否有一種簡單的方法來做到這一點。你的「答案」是沒有簡單的方法。這不是什麼大問題,但在這種情況下你錯了。並不意味着以投票的方式來傷害你的感情 - 雖然我看到你對我的回答報了仇 - 對你有好處。 – Chains

2

「簡單」的方法是將SELECT中的列複製/粘貼到GROUP BY中。 SQL中沒有語法快捷方式。

+0

...但它有一個UI快捷鍵。儘管如此,請參閱下面的答案,其中可能會有更多,但我只知道那一個。 – Chains

0

正如@Joe在評論中所說的,copy-past是最簡單的。除此之外,我不知道這種內置方式會根據選擇的內容自動分組。

1

如果你被所有列在您的SELECT節編組,想必所有你實現是使結果唯一的,在這種情況下,你不應該忽略GROUP BY條款,並且只使用SELECT DISTINCT ...

當然,這會提出一個問題,即爲什麼在結果集中有重複的結果,但這是一個不同的問題。

1

如果你沒有在你的SELECT(sum,avg,count等)中執行任何聚合,他們你不需要在你的Group By中有每一列。

而且 - 這裏有一個快捷鍵我知道的

  • 使用SSMS中的查詢設計器。用鼠標右鍵單擊表格所在的窗格,然後選擇「添加分組」。除了SSMS

其他SQL-編輯器還可能有類似這樣的東西好/更好的功能 - 檢查蟾蜍的SQL等

+0

這比select語句中的列複製和粘貼到組中的速度快嗎?複製和粘貼似乎要快得多。如果有40列,必須手動在他/她想要分組的每列旁邊勾選複選標記可能需要很長時間。 – dcp

+0

kuru na - 我自己試過這個,只有10列查詢設計師。我花了將近6-7秒鐘點擊所有這些列的複選框。 select語句中的列和切過去了大約3-4秒。所以這是一個實際的基準。也許你的方式對別人來說更快,但只是你不認爲我全部陷入了自我,我已經取消了失敗。我承認我不使用查詢設計器,所以嘿,也許這種方式對一些人來說會更好。 – dcp

+0

實際上,您可以在編寫查詢後選擇「添加分組」(因此您根本不必使用複選框 - 實際上,甚至不必使用設計器,因爲您可以在普通窗口中編寫查詢,然後點擊窗口,它會將您的sql移動到設計器) - 所以它實際上只是雙擊:r點擊菜單,然後l點擊選項。感謝您的答覆。 – Chains

0

我將它從對象瀏覽器拖放列或複製從select語句粘貼。