#sql #types #group-by #sum #case
#sql #типы #группировать по #сумма #случай
Вопрос:
Мне нужно выполнить следующее, но мне нужно СУММИРОВАТЬ в 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)
Ответ №1:
Выберите его, затем сгруппируйте;
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)
Комментарии:
1. Извините, но этот ответ не имеет смысла.
2. Извините, у меня в мозгу значение EntryValue, поле, которое мне нужно уточнить, это if EntryType = ‘D’ не значение ввода
3. @t-clausen.dk да, вы правы, я не уделил достаточного внимания вопросу, SUM (EntryValue) где EntryValue может быть символом, не имеет смысла
4. Нужно ли группировать по типу записи? Мне нужно отнять одно от другого, чтобы получить общее количество.
5. Извините, не понял, что вы хотели вычесть
Ответ №2:
Если вам нужно суммировать столбец, добавьте его в поле выбрать и сгруппировать:
SELECT SUM(EntryValue) AS TotEntry, ...
...
GROUP BY ...
вам не нужно группировать агрегированный столбец; вам также нужно фильтровать запрос?
Комментарии:
1. Нужно ли группировать по типу записи? Мне нужно отнять одно от другого, чтобы получить общее количество.
2. Извините, я не понимаю, что вам нужно. Что вы хотите получить с помощью запроса?
3. Вы правы! Я меняю код на старый, вы никогда не получите сумму, но повторите EntryValue… Но я по-прежнему не понимаю его потребностей.