-1

嗨,伙计们有一个问题,希望您能帮我解决这个问题

sql服务器

CAR_SERIAL_NO     MODEL                          MAKE                           
---------------- ------------------------------ --------------
1234              Turbo                          Porche                                
5678              Zafera                         Opel                                 
9012              Crawn                          Toyota                                   
3456              M5                             Bmw                                            
7890              Cabrio                         Bmw  

CAR_REGSTRATE_NO CAR_SERIAL_NO  
---------------- -------------
XV98CR               1234                          
CXER73               5678                     
098X44               9012                      
89EE43               3456                     
09KK33               7890   

CONTRACT_NO   CAR_REGSTRATE_NO   CLIENT_ID      START      END
------------- ----- -----------  --- ------  ----------- -----------
2344              XV98CR         45623        01-DEC-02  20-FEB-03                 
2335              CXER73         23344        12-OCT-02  12-DEC-03                  
3333              098X44         22442        10-OCT-02  15-OCT-03                 
5555              89EE43         77774        10-FEB-13  15-FEB-03                
6666              09KK33         33223        22-JUN-12  10-JAN-03  
4

2 回答 2

0

由于您没有列出所需的结果,因此我做出了最好的猜测。如果你需要不同的东西,你必须编辑你的问题并添加你想要的输出。

无论如何,这可能有效:

with HireDetails as
(
  select CAR_REGSTRATE_NO
    , Hires = count(1)
    , HireDays = sum(datediff(dd, START, [END]))
  from Hire
  group by CAR_REGSTRATE_NO
)
select c.MAKE
  , c.Model
  , c.CAR_SERIAL_NO
  , r.CAR_REGSTRATE_NO
  , hd.HireDays
  , hd.Hires
from Registration r
  inner join Car c on r.CAR_SERIAL_NO = c.CAR_SERIAL_NO
  left join HireDetails hd on r.CAR_REGSTRATE_NO = hd.CAR_REGSTRATE_NO
order by hd.HireDays desc

SQL Fiddle 与演示。你会注意到我更改了一些日期,START日期比END日期大十年。同样,如果这不正确,您需要使用更多详细信息更新您的问题。

我汇总了租用详细信息,因为即使您的示例数据中存在这种情况,也不能合理地假设汽车只会租用一次。

于 2013-04-07T23:02:52.780 回答
0

选择所有模型,与车辆交叉连接并与租金交叉连接,使用计数(*)按模型分组 - 让我们将此子查询表称为 T。有了这个,您可以要求包含计数的列上的最大值并过滤 T 以仅显示最大值。

于 2013-04-07T18:44:54.287 回答