2017-10-17 88 views
0

我有两个表。如下图所示:TicketTicketBasket
Ticket and TicketBasket releationship
我想选择这样的图例:
| tId | tDate | customerName | expDate | 税收 | 全部 |
| 1     | XXX   | XXX             | XXX     | 2   | 25   |
| 2     | XXX   | XXX             | XXX     | 2   | 20   |
| 3     | XXX   | XXX             | XXX     | 2   | 15   |
由于我的sql命令,结果与tId迭代,因为每个Ticket可以在它的篮子中有多个Items。
我的SQL代码:
如何用另一个表中的多行进行分组

SELECT distinct Ticket.tId,dbo.ToCustomeDate(Ticket.tDate) 'tDate', 
    Ticket.customerName,dbo.ToCustomeDate(isnull(Ticket.expDate,Ticket.tDate)) 'expDate', 
     Ticket.tax, 

    (
     (((TicketBasket.gamePrice*TicketBasket.gameCount)- 
     (((TicketBasket.gamePrice * TicketBasket.gameCount)*TicketBasket.offPrice)/100))+ 
     (((TicketBasket.gamePrice * TicketBasket.gameCount)- 
     (((TicketBasket.gamePrice * TicketBasket.gameCount)*TicketBasket.offPrice)/100))* (Ticket.tax)/100)) 

    ) AS total 
    FROM Ticket right JOIN TicketBasket 
    ON Ticket.tId = TicketBasket.tId 

但结果是
| tId | tDate | customerName | expDate | 税收 | 全部 |
| 1     | XXX   | XXX             | XXX     | 2   | 10   |
| 1     | XXX   | XXX             | XXX     | 2   | 10   |
| 1     | XXX   | XXX             | XXX     | 2   | 5       |
| 2     | XXX   | XXX             | XXX     | 2   | 10   |
| 2     | XXX   | XXX             | XXX     | 2   | 10   |
| 3     | XXX   | XXX             | XXX     | 2   | 10   |
| 3     | XXX   | XXX             | XXX     | 2   | 5       |

我可以用cursor来处理这个问题,但是我知道执行select查询会带来很大负担,所以感谢其他解决方案。

回答

1

这应该work..based您查询的输出:

Select 
iq.tld, iq.tDate, iq.customerName, iq.expDate,iq.tax, 
SUM(total) as newTotal 
from 
(
SELECT distinct Ticket.tId,dbo.ToCustomeDate(Ticket.tDate) 'tDate', 
    Ticket.customerName,dbo.ToCustomeDate(isnull(Ticket.expDate,Ticket.tDate)) 'expDate', 
     Ticket.tax, 

    (
     (((TicketBasket.gamePrice*TicketBasket.gameCount)- 
     (((TicketBasket.gamePrice * TicketBasket.gameCount)*TicketBasket.offPrice)/100))+ 
     (((TicketBasket.gamePrice * TicketBasket.gameCount)- 
     (((TicketBasket.gamePrice * TicketBasket.gameCount)*TicketBasket.offPrice)/100))* (Ticket.tax)/100)) 

    ) AS total 
    FROM Ticket right JOIN TicketBasket 
    ON Ticket.tId = TicketBasket.tId 
)iq 
group by iq.tld, iq.tDate, iq.customerName, iq.expDate,iq.tax 
+1

是它的工作以及 –

相关问题