2012-02-05 125 views
0

下面是表(新用戶,無法張貼圖片還):需要幫助從Excel數組公式將SQL語句組合

screenshot

我一直使用的Excel,但我由於數據集較大,因此切換到SQL。爲了在Excel中填充CELL G2,我會使用類似這樣的東西:

=SUM((A2:A8=E2)*(B2:B8)) 

在Excel for Cell G2中給出了一個值141。

我想出瞭如何讓這個工作在SQL中,但我不完全明白爲什麼這會起作用。以下是我在SQL中使用的內容:

SET Table2.total_units_purchased = Table1.some_number 
FROM Table2 INNER JOIN 
(
    SELECT Table1.item 
    , SUM(Table1.units_purchased) AS some_number 
    FROM Table1 
    GROUP BY Table1.item 
) Table1 
ON Table2.item = Table1.item 

在some_number之前是否需要「AS」?即使省略「AS」,這仍然有效。

我在這裏錯過了什麼嗎?最後一行代碼中的表的順序是否重要?

感謝您的任何幫助。

+0

作爲這種情況下的AS是一個別名,雖然不錯的形式,它不是必需的。 ON子句的順序無關緊要。 – xQbert 2012-02-05 22:15:53

+0

我對「AS」有點困惑,因爲我最初用它來標記查詢結果中的一列。我不知道它可以用來分配這樣的值。 – eek142 2012-02-05 22:21:10

+1

您的查詢完好無損。首先,對購買的單位進行總結(運行內部查詢以查看其輸出),然後將其視爲派生表(帶有別名「Table1」)並加入它以執行更新。 – ErikE 2012-02-05 23:25:05

回答

1

將'AS'關鍵字用作別名是可選的,這就是爲什麼當您省略'AS'時,您的查詢仍然有效。其次,最後一行代碼中的表的順序在這種情況下並不重要。如果您的代碼是ON Table1.item = Table2.item,查詢將以相同的方式工作。請注意,如果您使用左外連接或右外連接,則表格順序很重要。

在您的SQL代碼中,您正在爲該項目選擇'item'和'購買的單位總和',然後將這些數據放到另一個表中,並重新命名爲Table1。

然後,您將加入兩個表格Table2和新的Table1,其中的項目字段具有相同的值。

最後,您選擇'購買的單位總和'字段並將其分配到Table2的total_units_purchased字段。

你可以寫下你的SQL查詢,如下所示,它與你的Excel函數做同樣的事情。

select sum(table1.units_purchased) 
into table2.total_units_purchased 
from table1, table2 
where Table2.item = Table1.item 
+0

當我嘗試運行此操作時,出現「關鍵字附近的語法錯誤」選擇'「錯誤。這似乎比我所做的更簡單的解決方案。我不是100%確定任何一種解決方案現在正在工作......需要依然圍繞着SQL語言。 – eek142 2012-02-05 22:59:34

+0

上面的查詢應該工作正常,沒有任何錯誤。你指的是哪個數據庫?甲骨文,MySQL,..? – 2012-02-06 07:25:08

+0

SQL Server 2008 – eek142 2012-02-06 19:13:57