sql中的條件總和,根據字段中的條件從另一個表中獲取正確的總和 (conditional sum in sql, get correct sum from another table based on a condition in a field)


問題描述

sql中的條件總和,根據字段中的條件從另一個表中獲取正確的總和 (conditional sum in sql, get correct sum from another table based on a condition in a field)

I have a table (tbl1) like this, in which the sale amount for "store 3" is incorrect.

**date      store       sale**
Mar, 2013   store 1     100
Apr, 2013   store 1     80
Mar, 2013   store 2     70
Mar, 2013   store 3     125
Apr, 2013   store 3     80

The correct amount is in another table (tbl2):

**date      store       sale**
Mar, 2013   store 3     140
Apr, 2013   store 3     170

Now, I need to write a query that generates results as below:

**store     total_sale**
store 1     180
store 2     70
store 3     310

I tried different ways of writing CASE statements, but I'm getting wrong total. I have simplified the real question here hoping get help from the community. Thank you!


參考解法

方法 1:

give this a try,

SELECT  a.Store,
        COALESCE(c.TotalSale, b.TotalSale) AS TotalSale
FROM    (SELECT DISTINCT Store FROM Table1) a
        INNER JOIN
        (
            SELECT  Store, SUM(sale) TotalSale
            FROM    Table1
            GROUP   BY Store
        ) b ON a.Store = b.Store
        LEFT JOIN
        (
            SELECT  Store, SUM(sale) TotalSale
            FROM    Table2
            GROUP   BY Store
        ) c ON a.Store = c.Store
  • SQLFiddle Demo

(by sagharJohn Woo)

參考文件

  1. conditional sum in sql, get correct sum from another table based on a condition in a field (CC BY‑SA 3.0/4.0)

#select-case #SQL #select






相關問題

SQL 加入 2 個共享列的查詢 (SQL joining 2 queries that share a column)

sql中的條件總和,根據字段中的條件從另一個表中獲取正確的總和 (conditional sum in sql, get correct sum from another table based on a condition in a field)

如何對此查詢進行選擇案例? (How can I do select case to this query?)

聲明一個案例列表在多個地方使用 (Declaring a case list to be used in more than one place)

選擇案例語句中的數組是否可能? (Is an array inside a select case statement possible?)

將 VBA 選擇案例轉換為 C# (Convert VBA select case to C#)

使用 Word VBA 中的宏選擇大小寫將英寸轉換為毫米 (Convert inch to mm using macro select Case in Word VBA)

訪問,選擇案例 ActiveControl.Name? (Access, Select Case ActiveControl.Name?)

選擇不運行每個案例的案例 (Select Case Not Running Every Case)

JustBasic,在代碼中出現“錯誤的嵌套錯誤選擇/案例” (JustBasic, getting "bad nesting error select/case" in code)







留言討論