Мне нужна сумма из этих двух таблиц, но я получаю по отдельности -
SELECT
GrandTotal - RecPayAmount -
(
select
sum(detail.LineAmount)
From
TranPOSDetail as detail
where
detail.RefHeaderCode = TranPOSHeader.Code
and
EntryFlag = 4
)
from TranPOSHeader
where
VoucherTypeCode=2000
And
WalkInCustomerCode=200429
And
GrandTotal > RecPayAmount
Мой результат похож на
1) 10
2) 20
Но я хочу это как -
1) 30
Как я могу изменить этот запрос, чтобы он отражал желаемые результаты?
Не меняя существующий запрос, вы можете попробовать следующее.
SELECT SUM(T.S) AS Total FROM
(
SELECT
(GrandTotal - RecPayAmount -
(
select
sum(detail.LineAmount)
From
TranPOSDetail as detail
where
detail.RefHeaderCode = TranPOSHeader.Code
and
EntryFlag = 4
)
) AS S
from TranPOSHeader
where
VoucherTypeCode=2000
And
WalkInCustomerCode=200429
And
GrandTotal > RecPayAmount
) T
Используйте Cte и агрегированные итоговые значения
WITH Amount
AS (
SELECT GrandTotal - RecPayAmount - (
SELECT sum(detail.LineAmount)
FROM TranPOSDetail AS detail
WHERE detail.RefHeaderCode = TranPOSHeader.Code
AND EntryFlag = 4
) TotalAmount
FROM TranPOSHeader
WHERE VoucherTypeCode = 2000
AND WalkInCustomerCode = 200429
AND GrandTotal > RecPayAmount
)
SELECT Sum(TotalAmount)
FROM Amount
да, это работает ... спасибо за ваше время .. вы можете проголосовать за мой пост?
Вот один более простой подход
SELECT Sum(GrandTotal - RecPayAmount - oa.Total_LineAmount)
FROM TranPOSHeader th
OUTER APPLY (SELECT Sum(d.LineAmount)
FROM TranPOSDetail AS d
WHERE d.RefHeaderCode = th.Code
AND d.EntryFlag = 4) oa (Total_LineAmount)
WHERE VoucherTypeCode = 2000
AND WalkInCustomerCode = 200429
AND GrandTotal > RecPayAmount
да, это работает ... спасибо за ваше время .. вы можете проголосовать за мой пост?
Да, я ... но он говорит мне принять ответ через 2 минуты ... я приму, не волнуйтесь.