SQL Select Sum Query - PullRequest
       24

SQL Select Sum Query

2 голосов
/ 11 ноября 2011

Мне нужно выполнить следующее, но мне нужно SUM на EntryValue, где EntryType = 'C' - EntryType = 'D', но не уверен, где его включить.

SELECT SUM(EntryValue) AS EntryValue, Left(Warehouse,1) AS Branch 
FROM GenJournalDetail INNER JOIN InvJournalCtl ON (GenJournalDetail.GlPeriod = InvJournalCtl.LedgPeriod) AND (GenJournalDetail.GlYear = InvJournalCtl.YearPostLedg) AND (GenJournalDetail.Journal = InvJournalCtl.GlJournal)
WHERE GenJournalDetail.GlCode = 'Z5207550' AND GlYear = '2011' AND GlPeriod = '10' 
GROUP BY Left(InvJournalCtl.Warehouse,1) 

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Выберите его, затем сгруппируйте;

SELECT SUM(EntryValue) AS EntryValueTotal, EntryType, Left(Warehouse,1) AS Branch 
...
GROUP BY Left(InvJournalCtl.Warehouse,1), EntryType

Редактировать Я не понял, что вы хотите вычесть;

SELECT
    SUM(CASE EntryType
        WHEN 'C' THEN EntryValue
        ELSE 0 END
    )
    -
    SUM(CASE EntryType
        WHEN 'D' THEN EntryValue
        ELSE 0 END
    ) AS EntryValueTotal, 
    Left(Warehouse,1) AS Branch 
FROM GenJournalDetail 
  INNER JOIN InvJournalCtl ON (GenJournalDetail.GlPeriod = InvJournalCtl.LedgPeriod) AND (GenJournalDetail.GlYear = InvJournalCtl.YearPostLedg) AND (GenJournalDetail.Journal = InvJournalCtl.GlJournal)
WHERE 
  GenJournalDetail.GlCode = 'Z5207550' AND GlYear = '2011' AND GlPeriod = '10' 
GROUP BY Left(InvJournalCtl.Warehouse,1) 
0 голосов
/ 11 ноября 2011

Если вам нужно сложить столбец, добавьте его в выборку и группу:

SELECT SUM(EntryValue) AS TotEntry, ...
...
GROUP BY ...

вам не нужно группировать агрегированный столбец; Вам тоже нужно отфильтровать запрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...