2013-06-11 3 views
1

мне нужна сумма от суммы TrasactionPaymentsDetailsполучить сумму в запросе с двумя таблицами

DECLARE @mydate DATETIME 
SELECT @mydate = '2012-07-28' 

select sum(rd.Amount) as total,rp.TransactionCode, rp.ReferenceDate,rp.TransactionFlag,rd.Amount 

from ReceiptsPayments rp,ReceiptsPaymentsDetail rd where 
ReferenceDate >= DATEADD(dd,1-day(@mydate),@mydate) 
and ReferenceDate <= DATEADD(dd,0-day(DATEADD(mm,1,@mydate)),DATEADD(mm,1,@mydate)) 
and TransactionFlag='P'; 

Ниже приводится ошибка. пожалуйста, помогите

Msg 8120, Level 16, State 1, Line 6 Колонка 'ReceiptsPaymentsDetail.TransactionCode' недопустим в списке выбора , поскольку он не содержится ни в статистической функции или предложения GROUP BY.

ответ

1

Попробуйте один -

DECLARE @mydate DATETIME 
SELECT @mydate = '20120728' 

SELECT 
     total = SUM(rd.Amount) 
    , rp.TransactionCode 
    , rp.ReferenceDate 
    , rp.TransactionFlag 
FROM dbo.ReceiptsPayments rp 
JOIN dbo.ReceiptsPaymentsDetail rd ON ON rp.ID = rd.ReceiptPaymentsID 
WHERE ReferenceDate >= DATEADD(dd, 1 - DAY(@mydate), @mydate) 
    AND ReferenceDate <= DATEADD(dd, - DAY(DATEADD(mm, 1, @mydate)), DATEADD(mm, 1, @mydate)) 
    AND TransactionFlag = 'P' 
GROUP BY 
     rp.TransactionCode 
    , rp.ReferenceDate 
    , rp.TransactionFlag 
+0

нужна сумма всех транзакций .. не могли бы вы помочь с этим .. этот код работает нормально, но нужна сумма всех транзакций –

3

Вы должны GROUP BY:

DECLARE @mydate DATETIME 

SELECT @mydate = '2012-07-28' 

SELECT Sum(rd.amount) AS total, 
     rp.transactioncode, 
     rp.referencedate, 
     rp.transactionflag 
FROM receiptspayments rp, 
     INNER JOIN receiptspaymentsdetail rd ON rp.id=rd.receiptpaymentsid 
WHERE referencedate >= Dateadd(dd, 1 - Day(@mydate), @mydate) 
     AND referencedate <= Dateadd(dd, 0 - Day(Dateadd(mm, 1, @mydate)), 
          Dateadd(mm, 1, @mydate)) 
     AND transactionflag = 'P' 
GROUP BY rp.transactioncode, 
      rp.referencedate, 
      rp.transactionflag; 

Кроме того, вам необходимо связать таблицы для того, чтобы избежать принятия CROSS JOIN, который я полагаю, не то, что вы хотите получить. Я предположил, что есть Id где-то в вашей таблице receiptpayments, с FK в receiptpaymentsdetails, отсюда INNER JOIN.

+0

+1 за хороший ответ. – Devart

+0

нужна сумма всех транзакций .. не могли бы вы помочь с этим. –

0

Group By Добавить статью в ваше заявление после последнего where условия:

Group By rp.TransactionCode, rp.ReferenceDate,rp.TransactionFlag 
+1

Вы не можете суммировать rd.amount, если вы GROUP BY rd.Amount. вы получите строку для каждого значения суммы. –

+0

операционная система не выглядит все еще спящей ... – Milen

+0

нужна сумма всех транзакций .. не могли бы вы помочь с этим. –

Смежные вопросы