2013-01-21 26 views
0

我需要一個使用CASE語句根據SQLite條件進行減或添加的查詢。這是我的時刻查詢:在SQLite中使用CASE條件加總或減去

SELECT s.companyName, CASE ia.type 
         WHEN ia.type='add' THEN SUM(ia.quantity) 
         WHEN ia.type='subtract' THEN SUM(-ia.type) 
         ELSE SUM(0) END AS total 
FROM stocktake s 
LEFT JOIN stocktake_adjustment sa ON s.stocktakeId = sa.stocktakeId 
LEFT JOIN adjustment a ON a.adjustmentId = sa.adjustmentId 
LEFT JOIN inventory_adjustment ia ON ia.adjustmentId = a.adjustmentId 
LEFT JOIN inventory i ON i.inventoryId = ia.inventoryId 
LEFT JOIN supplier s ON s.supplierId = i.supplierId 
WHERE s.supplierId = '4da99b63-fcb9-9b9f-8415-4896caeb920c'; 

基本上我想添加如果條件「添加」或減,如果條件是減法,從總。

先謝謝你們。

回答

1

將您CASESUM

SELECT s.companyName, SUM(CASE ia.type 
          WHEN ia.type='add' THEN ia.quantity 
          WHEN ia.type='subtract' THEN -ia.quantity 
          ELSE 0 
          END) 
         AS total 
FROM stocktake s 
LEFT JOIN stocktake_adjustment sa ON s.stocktakeId = sa.stocktakeId 
LEFT JOIN adjustment a ON a.adjustmentId = sa.adjustmentId 
LEFT JOIN inventory_adjustment ia ON ia.adjustmentId = a.adjustmentId 
LEFT JOIN inventory i ON i.inventoryId = ia.inventoryId 
LEFT JOIN supplier s ON s.supplierId = i.supplierId 
WHERE s.supplierId = '4da99b63-fcb9-9b9f-8415-4896caeb920c'; 

(我假定-ia.type在原來的問題是一個錯字,真正意義-ia.quantity

+0

謝謝安東,正是我需要做的。 –

1

我想你需要的是回到屋裏去的CASE語句SUM,請從CASEWHEN(或更改爲簡單的CASE語句)中刪除ia.type,並且還要添加GROUP BY

SELECT s.companyName, 
     SUM(CASE WHEN ia.type = 'add' THEN ia.Quantity 
       WHEN ia.type = 'subtract' THEN -ia.Quantity 
       ELSE 0 
      END) AS total 
FROM stocktake s 
     LEFT JOIN stocktake_adjustment sa 
      ON s.stocktakeId = sa.stocktakeId 
     LEFT JOIN adjustment a 
      ON a.adjustmentId = sa.adjustmentId 
     LEFT JOIN inventory_adjustment ia 
      ON ia.adjustmentId = a.adjustmentId 
     LEFT JOIN inventory i 
      ON i.inventoryId = ia.inventoryId 
     LEFT JOIN supplier s 
      ON s.supplierId = i.supplierId 
WHERE s.supplierId = '4da99b63-fcb9-9b9f-8415-4896caeb920c' 
GROUP BY s.CompanyName; 
+0

謝謝Gareth,正是我在找的! –