Как исправить неправильный счет на объединенной таблице в SQL - PullRequest
0 голосов
/ 23 октября 2019

При подсчете файлов при соединении этой таблицы с другой возникает проблема. Либо я получаю больше или меньше, чем должно быть.

Используя этот простой запрос, я могу получить правильный счет:

select count(files.id)
from files
where files.OpeningDate between '2015-11-01' and '2015-11-30'
  and files.CustomerID = 3258

Результат: 420

Когда я пытаюсь интегрировать его в более сложный запрос:

SELECT  
    FORMAT(files.OpeningDate, 'yyyy-MM') as OpeningDateFormatted,
    SUM(CASE WHEN transactiontypeid IN (2, 5) THEN amount ELSE 0 END) AS AdjustmentSum,
    SUM(CASE WHEN transactionTypeID = 1 THEN amount ELSE 0 END) AS InterestSum,
    SUM(CASE WHEN transactionTypeID IN (8, 17, 25, 18) THEN amount ELSE 0 END) AS CreditSum,
    SUM(CASE WHEN transactionTypeID IN (10, 7, 12, 14, 11, 21) THEN amount ELSE 0 end) AS PaymentSum,
    COUNT(DISTINCT(files.id)) AS count1,
    COUNT((files.id)) AS count2
FROM 
    files
LEFT JOIN 
    filestransactions ON files.id = filestransactions.exid
WHERE 
    FilesTransactions.TransactionDate BETWEEN '2015-10-01' AND '2019-09-30' 
    AND ExID IN (SELECT id 
                 FROM files 
                 WHERE files.OpeningDate BETWEEN '2015-10-01' AND '2019-09-30' 
                   AND files.CustomerID = 3258)
GROUP BY 
    FORMAT(files.OpeningDate, 'yyyy-MM')
ORDER BY
    OpeningDateFormatted

Количество 1: 296, Количество 2: 481 за 2015-11

Я пробовал разные комбинации слева / справа/ внутреннее объединение с и без отчетливого, я также пытался использовать подзапрос, но я не могу получить правильный счет, который составляет 420.

Могу ли я получить некоторые советы, чтобы встать на правильный путь?

...