2013-01-21 3 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'; 

+0

Anton에게 감사드립니다. 정확하게해야 할 일이 있습니다. –

1

난 당신이 내부의 CASE 문을 이동하는 것입니다 필요 생각 (나는 원래의 질문에 -ia.type 정말 -ia.quantity을 의미 오타라고 가정) SUM은 CASEWHEN 사이에서 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에게 감사 드려요. 내가 찾고 있던 바로 그거야! –

관련 문제