2016-11-06 2 views
2

에 의해 그룹을 중첩 사용 할 수 있습니까 : 나는 요약 보고서를 생성 할 송장, ServicesinInvoice서비스 (첨부 그림 참조) 내가 3 개 테이블이 SQL

enter image description here

을 그 각 서비스 (현금 총, 차변 총계)의 일일 판매량을 표시합니다.이 서비스를 사용해보십시오.

SELECT Service.ServiceName, SUM(ServicesinInvoice.Total) AS Total, COUNT(*) AS Count, Service.ServiceID 
FROM ServicesinInvoice INNER JOIN 
    Service ON ServicesinInvoice.ServiceId = Service.ServiceID INNER JOIN 
    Invoice ON ServicesinInvoice.InvoiceId = Invoice.InvoiceID 
WHERE (dbo.Invoice.InvoiceDate >= CONVERT(DATETIME, '2016-06-11 00:00:00', 102)) 
GROUP BY dbo.Service.ServiceName, dbo.Service.ServiceID 

약 sql 코드는 각 서비스에 대한 총계를 제공합니다. 원하는 것은 각 서비스 (서비스별로 그룹화)에 대한 총 현금 및 차변 합계를 얻는 것입니다. , 직불 카드는 다른 사람의 현금을 의미 된 ClientID = 1 경우 테이블 (송장)에서

나는, 된 ClientID 열 수 있습니다.

도와주세요.

미리 감사드립니다. 내가 제대로 이해하면

+0

MS SQL Server Express는 2012 –

답변

1

, 즉는 조건 집합으로 수행 할 수 있습니다

SELECT Service.ServiceID,Service.ServiceName, 
     SUM(CASE WHEN Invoice.ClientId = 1 THEN ServicesinInvoice.Total ELSE 0 END) AS Total_cash, 
     SUM(CASE WHEN Invoice.ClientId <> 1 THEN ServicesinInvoice.Total ELSE 0 END) AS Total_debit, 
     COUNT(*) AS Count 
FROM ServicesinInvoice INNER JOIN 
    Service ON ServicesinInvoice.ServiceId = Service.ServiceID INNER JOIN 
    Invoice ON ServicesinInvoice.InvoiceId = Invoice.InvoiceID 
WHERE (dbo.Invoice.InvoiceDate >= CONVERT(DATETIME, '2016-06-11 00:00:00', 102)) 
GROUP BY dbo.Service.ServiceName, dbo.Service.ServiceID 
+0

감사 SAGI, 나는 그게 내가 .. 내가 당신의 대답을 테스트합니다 원하는 것 같아요. –

+0

문제가없는 친구 @AbdulsalamElsharif – sagi

+0

감사합니다. @sagi 너무 많이했기 때문에 답을 테스트했습니다. –