我正在努力寻找给定设备的最后一次销售。
我有2张桌子
他们通过Machines.MahineID = Sales.MachineID
这是我到目前为止所做的:
Select Machines.Name, Sales.DateOfSale from Machines
Left Outer join Sales on Sales.MachineId = Machines.MachineId
这给了我给定机器的所有销售,但是我想要给定机器的最新销售。我还想知道一台机器是否从未进行过销售。因此左外连接。
答案 0 :(得分:2)
如果您只需要姓名和最后一笔销售:
select Machines.Name, max(Sales.DateOfSale)
from Machines
left join Sales on Sales.MachineId = Machines.MachineId
group by Machines.Name
如果您需要最后一条记录中的其他列:
select Machines.Name, Sales.*
from Machines
left join (
select MachineId, max(DateOfSale) max_DateOfSale
from Sales
group by MachineId
) max_Sales
on max_Sales.MachineId = Machines.MachineId
left join Sales
on Sales.MachineId = Machines.MachineId
and Sales.DateOfSale = max_Sales.max_DateOfSale
答案 1 :(得分:1)
你可以试试这个:
Select Machines.Name, Sales.DateOfSale
from Machines
Left Outer join Sales s on Sales.MachineId = Machines.MachineId
where not exists (
select *
from Sales os -- Other sale...
where s.MachineId = os.MachineId -- Same machine
AND os.DateOfSale > s.DateOfSale -- later date
)
有一个相关的exists
查询,用于检查同一台计算机上是否存在以后发生的其他销售。