Как вычесть баланс клиента из суммы, причитающейся по счету-фактуре, и собрать результат по одному запросу
Проблема
Как сделать запрос вычесть AmountDue для счета-фактуры из баланса клиента .
Баланс запрос клиента :
SELECT VTargetDetail.BranchCode ,VTargetDetail.SubLdgCode as UnitCode ,(SUM(dbo.VTargetDetail.Debit * dbo.VTargetDetail.CurrencyRate) - SUM(dbo.VTargetDetail.Credit * dbo.VTargetDetail.CurrencyRate) ) as Balance FROM dbo.VTargetDetail LEFT OUTER JOIN dbo.TypeTrxSafe ON dbo.VTargetDetail.BranchCode = dbo.TypeTrxSafe.BranchCode AND dbo.VTargetDetail.TrxTypeCode = dbo.TypeTrxSafe.SafeTrxTypeCode WHERE (1 = 1) AND (VTargetDetail.TrxDate <= '2018/09/17') AND (VTargetDetail.SubLdgCodeType = 28) AND (VTargetDetail.SubLdgCode=5639) group by VTargetDetail.SubLdgCode,VTargetDetail.BranchCode
AmountDue для запроса счета-фактуры выглядит следующим образом :
select BranchCode,UnitCode,RequiredAmount, Serial,Year,Month,CurrentReadingDate,CurrentMeterReading,LastMeterReading,CurrentConsumption,CurrentConsumptionValue ,VATValue,CleaningFees from WAHInvoice where 1=1 AND year=2018 AND BranchCode = 1 and Month=5 and UnitCode=5639
Как вычесть баланс из первого запроса представить баланс запрос клиента
От
RequiredAmount на второй AmountDue запроса для запроса счета-фактуры
Значение Баланса - RequiredAmount
и мне нужно отображение результата по одному запросу .
this query above must return one record meaning final result one record BranchCode UnitCode Difference 1 5639 CustomerBalance - requiredamount
Как это сделать с помощью союза
Что я уже пробовал:
select BranchCode,UnitCode,RequiredAmount, Serial,Year,Month,CurrentReadingDate,CurrentMeterReading,LastMeterReading,CurrentConsumption,CurrentConsumptionValue ,VATValue,CleaningFees from ( select BranchCode,UnitCode,RequiredAmount, Serial,Year,Month,CurrentReadingDate,CurrentMeterReading,LastMeterReading,CurrentConsumption,CurrentConsumptionValue ,VATValue,CleaningFees from WAHInvoice where 1=1 AND year=2018 AND BranchCode = 1 and Month=5 and UnitCode=5639 union SELECT VTargetDetail.BranchCode ,VTargetDetail.SubLdgCode as UnitCode ,(SUM(dbo.VTargetDetail.Debit * dbo.VTargetDetail.CurrencyRate) - SUM(dbo.VTargetDetail.Credit * dbo.VTargetDetail.CurrencyRate) ) as Balance,'' AS Serial,'' as YEAR,'' AS Month,'' as CurrentReadingDate,'' as CurrentMeterReading,'' as LastMeterReading,'' as CurrentConsumption,'' as CurrentConsumptionValue,'' as VATValue,'' as CleaningFees FROM dbo.VTargetDetail LEFT OUTER JOIN dbo.TypeTrxSafe ON dbo.VTargetDetail.BranchCode = dbo.TypeTrxSafe.BranchCode AND dbo.VTargetDetail.TrxTypeCode = dbo.TypeTrxSafe.SafeTrxTypeCode WHERE (1 = 1) AND (VTargetDetail.TrxDate <= '2018/09/17') AND (VTargetDetail.SubLdgCodeType = 28) AND (VTargetDetail.SubLdgCode = 5639) group by VTargetDetail.SubLdgCode,VTargetDetail.BranchCode )as INV
Я столкнулся с еще одной проблемой
Error converting data type varchar to numeric.
также Как получить поле вычесть баланс из второго запроса - reuired сумма из первого запроса
ahmed_sa
выберите BranchCode,UnitCode,RequiredAmount, Serial,Year,Month,CurrentReadingDate,CurrentMeterReading,LastMeterReading,CurrentConsumption,CurrentConsumptionValue ,VATValue,CleaningFees
от
(
выберите BranchCode,UnitCode,RequiredAmount, серия,год,месяц,CurrentReadingDate,конвертировать(тип varchar,CurrentMeterReading) как CurrentMeterReading,конвертировать(тип varchar,LastMeterReading) как LastMeterReading
Конвертировать(тип varchar,CurrentConsumption) как CurrentConsumption,конвертировать(тип varchar,CurrentConsumptionValue) как CurrentConsumptionValue ,конвертировать(тип varchar,VATValue) как VATValue,
Конвертировать(тип varchar,CleaningFees) как CleaningFees от WAHInvoice инво, где 1=1 год=2018 и BranchCode = 1/* и месяц=5 и UnitCode=5639*/
союз
Выберите VTargetDetail.BranchCode ,VTargetDetail.SubLdgCode в качестве UnitCode ,
(SUM(dbo.VTargetDetail.Дебет * dbo.VTargetDetail.CurrencyRate) - сумма(dbo.VTargetDetail.Кредит * dbo.VTargetDetail.CurrencyRate) ) как остаток ," как серийные ," как "год"," как месяц", а CurrentReadingDate," как CurrentMeterReading," как LastMeterReading," как CurrentConsumption," как CurrentConsumptionValue," как VATValue," как CleaningFees
От ДБО.VTargetDetail левое внешнее соединение
ДБО.TypeTrxSafe на dbo.VTargetDetail.BranchCode = ДБО.TypeTrxSafe.BranchCode и dbo.VTargetDetail.TrxTypeCode = dbo.TypeTrxSafe.SafeTrxTypeCode
Где (1 = 1) и (VTargetDetail.TrxDate <= '2018/09/17') и (VTargetDetail.SubLdgCodeType = 28) /*и (VTargetDetail.SubLdgCode = 5639) */
группа по VTargetDetail.SubLdgCode,VTargetDetail.BranchCode
)как INV, где Month=5 и UnitCode=5639
мой вопрос Как выбрать псевдоним баланса изнутри union