[英]Query Travel Data for Certain Pattern (VBA / SQL / MS Access)
我需要某些SQL查詢的幫助。 我有詳細說明火車及其路線的數據。 它包含以下數據:
我需要查找其中Train#從一個城市到另一個城市到州外的旅行的實例。 請記住,在兩個城市之間做更多的城市(例如3個城市,然后是州外)也同樣有用。
例:
Train Starts in Chicago Departs to Chesterfield, IL
Departs Chesterfield, IL and Arrives at Springfield, IL
Departs Springfield, IL and Arrives at St. Louis Missouri
因此,在3行數據中,您將看到:
35, 500, Chicago, IL, Chesterfield, IL, 1/1/2014
35, 501, Chesterfield, IL, SpringField, IL, 1/1/2014
35, 502, SpringField, IL, St.Louis, MS, 1/1/2014
檢測數據中此類實例的最佳方法是什么? 也許有一個“乘火車分組”#可以顯示他們有多少次發車,而發車與另一個人的到來相匹配?
請注意:數據將包含數千行數據; 連續許多天都由多次Train#出發。 顯然,例如,我們不想將2014年1月1日至2014年2月22日的偏離視為聯系。 一個連接將需要相隔1-2天,甚至可以考慮。
以下內容將為您提供火車出境時的所有實例:
SELECT *
FROM YourTableName
WHERE [Departure State] <> [Arrival State]
您的語法可能會略有不同,具體取決於您的SQL風格。
編輯:隨着更新的問題,現在我不清楚您在問什么。 從最初的問題中,我得知您想知道火車何時進入另一州。 您可以在每一行中獲得該信息-如果出發州與到達州不同,則該州顯然越過了州界。 因此,無需與其他行進行比較。 顯然,您在詢問其他問題-更多數據和預期結果將有助於更好地了解情況。
我很確定這會起作用。 基本上,您想對到達狀態和離開狀態相同的次數求和,並將其與給定火車的條目數進行比較。 您需要至少2條狀態匹配的記錄,並且您想要的總記錄多於匹配記錄(這表示至少有1條狀態外記錄)。
SELECT Train#, Sum(CASE WHEN [Departure State] = [Arrival State] THEN 1 ELSE 0) AS SameState, Sum(1) as TotRecords
FROM YourTableName
Group By Train#
HAVING Sum(CASE WHEN [Departure State] = [Arrival State] THEN 1 ELSE 0) >= 2
AND Sum(1) >= 3
AND Sum(CASE WHEN [Departure State] = [Arrival State] THEN 1 ELSE 0) < Sum(1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.