2013-10-03 120 views
0

我找查表得到某種類型的事件的一種方式的時間內獲取的記錄,與標準事件對的時間範圍內的所有事件發生同一個人。這聽起來像是無稽之談。考慮以下;Access查詢幫助 - 再創新

Example

想象我想每個人都「SHIFT」 S(一個人可以每天多班)和它相關的中斷(但也有可能是其他的東西也一樣)的方式在日期範圍內查詢也不錯。最終我會用多年的數據來工作,而不是所有這些都是每個人都需要的。

這個例子將返回前三排,再加上近兩年。第5行是休息,但它並沒有轉變爲以內的人1

我很願意提供一些代碼,但老實說,我也別想從哪裏開始的這一次發生。我想我需要一個子查詢?任何幫助將不勝感激!

我主要使用訪問2003,以便實現這一面向反應將是理想的。

回答

1

你所描述的問題的方法,看來你想要的變化和相關的假期,因爲不同的行。要做到這一點,你可以使用union all來組合這兩種不同的類型。通過相關的子查詢,您可以查找在班次期間發生的中斷。

Select 
    * 
From 
    Events 
Where 
    Event_Name = 'SHIFT' 
Union All 
Select 
    * 
From 
    Events e1 
Where 
    Event_Name = 'BREAK' And 
    Exists (
     Select 
      'x' 
     From 
      Events e2 -- find corresponding shift for break 
     Where 
      e1.Event_Owner = e2.Event_Owner And 
      e2.Event_Name = 'SHIFT' And 
      e1.Event_Start >= e2.Event_Start And 
      e1.Event_End <= e2.Event_End 
    ) 
+0

廠隆重。我將如何適應這個接受更多的次要事件(如休息)或只覆蓋某個日期範圍? 我不完全理解這個代碼,但工會看起來像一個好地方開始,所以感謝您的意見! – Dicckk

+0

我一直在構建,它確實使很多感覺:) – Dicckk