2017-06-01 177 views
0

我正在寻找一种方式来总结我的发票在另一列中的SQL,但挣扎,没有人有一个想法如何做到这一点?提前致谢。寻找一种方法来总计我的每一个发票

SELECT I.Invoice_ID AS "Invoice ID", I.Client_ID AS "Client ID", 
     B.Client_Name AS "Clients Name", B.Client_Address AS "Clients Address", 
     I.Invoice_Date AS "Date of Invoice", B.Course_ID AS "Course ID", 
     C.Course_Description AS "Course Description", TO_CHAR(C.Cost, 'L9,999.99') AS "Cost", 
     B.Attendees_No AS "Number of Attendees", TO_CHAR(C.cost * B.Attendees_No, 'L9,999.99') AS "Total" 
FROM Invoice I, Booking B, Course C 
WHERE B.Client_Name = 'Central Library' AND B.Course_ID = C.Course_ID; 

This is a picture of the query

+0

您的发票总额是什么意思? – itay

+0

我希望每个人都有一个总计发票,在我收入的例子中,我有两张发票,每个预订的总数显示在最后。我确定可以实现一个ROLLUP函数,但在如何实现它的过程中挣扎着。 –

+0

您真的应该考虑切换到ANSI JOIN,而不是在WHERE子句中将表格串联在一起的旧式方法。发票与您的查询中的预订或课程有何关系?您是否故意仅显示单个客户的客户详细信息和地址?你的预期产出是多少? – SchmitzIT

回答

1

你在正确的道路想着“Rollup`在这种情况下,它只是一个window function,你可能需要上:

SUM(C.cost * B.Attendees_No) OVER (PARTITION BY I.Invoice_ID) as Total 

这将吐出的C.cost * B.Attendees_No总和每个Invoice_ID。因此,在您的记录集中具有相同invoice_id的记录应在此处显示相同的total

+0

谢谢,作品完全如何我想:) –

相关问题