2013-05-13 64 views
0

我有我要查詢客戶和服務SQL:查詢2個表,以獲得最新日期爲每個記錄

Customer表

cnum  lastName  Address  Phone  Comments  

    2   McKenzie  Main Street 1234567898 None 
    3   Stevenson  South Street 1225448844 None 
    4   Adams   North Street 1234545454 None 

服務

 IncidentNum  cnum  serviceDate  status  category  LastUpdated 

    x1    2  02-21-2013  Closed  Repair  02-21-2013 
    c2    2  05-12-2013  Open   Installation 05-13-2013 
    d2    3  05-01-2013  Closed  Repair  05-05-2013 
    f2    4  05-12-2013  Open   Repair  05-12-2013 

基本上兩個表是什麼我想要做的是顯示每條客戶記錄的最新更新記錄,而不管狀態是關閉還是打開。

決賽:

cnum lastName  Address  Phone  Category  Last Service 
    2  McKenzie  Main Street 1234567898 Installation 05-13-2013 
    3  Stevenson South Street 1225448844 Repair   05-05-2013 
    4  Adams  North Street 1234545454 Repair   05-12-2013 

進出口使用OLEDB,這是我在VB項目。 任何輸入將不勝感激。先謝謝你!

+0

你試過在你的查詢中使用MAX(LastUpdated)嗎? – rach 2013-05-13 20:32:45

+0

是的,我有,但它所做的只是返回一條記錄,它是服務表中最新的更新記錄。 – Mariell 2013-05-13 20:36:22

+0

所以@Mariell ..那就是你想要的..對吧? ..服務表中的最新記錄??? – 2013-05-13 20:37:16

回答

0

這個很簡單..看你有沒有加入對* CNUM *,然後上面的,你可以把條件最新/最大servicedate這兩個表..

您可以使用下面查詢同樣的任務 -

select customer.cnum, 
     customer.lastname, 
     customer.address, 
     customer.phone, 
     service.category, 
     service.servicedate 
    from customer,service 
where customer.cnum = service.cnum 
    and service.servicedate = (select max(serviceDate) from service service2 
           where service2.cnum = customer.cnum) 

我希望這是你在找什麼..

編輯:編輯查詢顯示客戶信息這不是p在服務表中發回

select customer.cnum, 
     customer.lastname, 
     customer.address, 
     customer.phone, 
     service.category, 
     service.servicedate 
    from customer left outer join service on (customer.cnum = service.cnum) 
    where (service.servicedate = (select max(serviceDate) from service service2 
           where service2.cnum = customer.cnum) 
      or service.cnum is null) 
+0

感謝您的輸入pratik,我試過這個查詢,但不幸的是它不工作。 – Mariell 2013-05-13 20:48:33

+0

@Mariell:如果你詳細闡述,那將會很棒。有錯誤還是錯誤的結果? – 2013-05-13 21:13:36

+0

我又回頭仔細檢查,發現我錯過了一個括號。該查詢現在可用,但結果並不完全正確。是否可以顯示不在服務表中的客戶記錄(例如:尚未發生事故的新創建的客戶)以及服務表中的客戶(僅顯示最後更新的記錄)? – Mariell 2013-05-13 21:55:52

0

你能試試嗎?

select c.cnum, c.lastname, c.address, 
c.phone, s.category, s.servicedate 
from customer c,service s 
where c.cnum = s.cnum 
group by c.cnum 
having s.LastUpdated = max(s.LastUpdated) 
0
select distinct customer.cnum,customer.lastname,customer.address,customer.phone, 
service.category, 
MAX(lastupdated)as lastservice from service,customer where service.cnum=customer.cnum 
and service.servicedate = (select max(serviceDate) from service service2 
          where service2.cnum = customer.cnum) 
group by customer.cnum,customer.lastname,customer.address,customer.phone, 
service.category 

我希望這是你在找什麼。 我測試了它,它給出了你在問題中提到的確切輸出。

相關問題