2

我正在尝试查找给定设备的最后一次销售。

我有 2 张桌子

  1. 机器
  2. 销售量。

他们通过Machines.MahineID = Sales.MachineID

这是我到目前为止所拥有的:

Select Machines.Name, Sales.DateOfSale from Machines 
Left Outer join Sales on Sales.MachineId = Machines.MachineId

这为我提供了给定机器的所有销售额,但我只想要给定机器的最新销售额。我还想知道一台机器是否从未销售过。因此,左外连接。

4

2 回答 2

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
于 2012-07-01T20:26:52.680 回答
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查询可以检查同一台机器上是否有其他销售在以后发生。

于 2012-07-01T20:18:22.663 回答