2012-02-21 75 views
1

我想從下表創建一個視圖。此表包含許多許多記錄,我的目標是讓視圖爲列A和列B保留某些TOTALS(總和),但基於不同的WHERE子句。目前我已經創建了兩個單獨的視圖來跟蹤我需要的總和。在mysql中創建VIEW

我的問題是如果我可以在一個視圖中做到這一點,而不是兩個單獨的視圖。

TABLE:USERID時間列A列B

我想保持以下兩個總計軌道:

TOTAL 1:SELECT USERID,SUM(TIME)FROM TABLE WHERE COLUMN甲<> 0
共2:SELECT USERID,SUM(TIME)FROM表,其中列B <> 0

有沒有辦法在一個查詢來獲取這2點總數?

回答

2
SELECT USERID, 
     SUM(CASE WHEN COLUMN_A<>0 THEN TIME ELSE 0 END) AS ColumnASum, 
     SUM(CASE WHEN COLUMN_B<>0 THEN TIME ELSE 0 END) AS ColumnBSum 
    FROM TABLE 
    GROUP BY USERID 
+0

這是一個很好的信息。我不知道這樣的建設問題!謝謝。 – flukyspore 2012-02-21 17:42:16

0

在MySQL中的視圖不能包含多個查詢,但它聽起來並不像你一定需要一個視圖。爲什麼不只是做

SELECT USERID, SUM(TIME) FROM TABLE WHERE COLUMN A <> 0 
UNION 
SELECT USERID, SUM(TIME) FROM TABLE WHERE COLUMN B <> 0 

這是不是給你你需要什麼?

+0

工會似乎並不在我的情況下工作,因爲只有一列標題將時間創建(我需要兩個單獨的時間總量。 – flukyspore 2012-02-21 17:41:38

+0

你很可能加入那些兩個查詢在這種情況下,在.USERID = B.USERID,但似乎喬發佈的解決方案正在做你所需要的東西 – 2012-02-21 17:44:05

+0

真的!感謝2美分! – flukyspore 2012-02-21 17:44:53