ahmed_sa Ответов: 0

Как вычесть баланс клиента из суммы, причитающейся по счету-фактуре, и собрать результат по одному запросу


Проблема

Как сделать запрос вычесть 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

0 Ответов