2015-03-13 71 views
0

我有一個關於結構化查詢的問題。我有5個表格,我需要從中獲取特定數據或需要處理的數據。我需要根據這些表中的數據進行計算,但首先我需要顯示不需要進行任何計算的數據列。到目前爲止,我做了一個臨時表,並根據需要在表中查詢了所有列。我的下一個任務和思考過程是創建另一個臨時表並執行所有計算並填寫它們,然後將兩個臨時表合併到一個表中。查詢計算和臨時表

我的問題:對於所有這些計算,一些需要基於平均值的計算,計數,總和等,總共將有至少10個新列。我遇到的問題是構建一個查詢,使我能夠從表中實現這些計算並實現我期望的結果。任何人都可以幫助這個複雜的查詢和結構嗎?

回答

0

數據樣本可能會有所幫助。如果適用,我建議使用T-SQL的窗口函數來完成聚合。窗口函數允許您執行這些聚合,而無需執行多個GROUP BY。當數據需要聚合到不同的組時,這非常有用,因爲它允許您在一個查詢中執行所有聚合,而不必編寫一個查詢,而不必編寫多個查詢,所有查詢都使用不同的GROUP BY。

這裏是T-SQL中基本窗口函數的鏈接。 https://msdn.microsoft.com/en-us/library/ms189461.aspx

當對數據集執行多個聚合時,公用表表達式(CTE)也非常有用,因爲它們允許您更好地按邏輯順序排列查詢的可讀性。您創建的每個CTE都可以引用上面創建的任何CTE,這可以讓您在生成最終輸出之前將多個CTE鏈接在一起。

以下是一些基本的CTE示例的鏈接(請參閱使用多個CTE的示例C)。 https://msdn.microsoft.com/en-us/library/ms175972.aspx

希望這些幫助。

+0

嗨@rhholt,感謝您的回覆!我並不知道「with」聲明,我認爲這將是我的情況中最好的方法,所以我會放棄這一做法。我被卡住了,無法查詢像上面所述的特定設置,這絕對有幫助。謝謝! – Sweaver 2015-03-16 01:38:57

+0

不客氣,很高興我能幫上忙。 – rhholt 2015-03-16 18:53:31