感謝您的時間!對於每個用戶,我希望輸出包含其最早生效日期和最後結束日期的單個列,以及此表和其他表中的其他列(這些內容對於每個用戶都是一致的)。以下是輸入數據的格式。SQL選擇不同行中的最大和最小日期
User Eff_Date End_Date Otherstuff...
----|-------------|------------|---------
001 | 20140101 | 20140106
001 | 20140107 | 99990101
002 | 20140201 | 20140305
002 | 20140306 | 20140319
002 | 20140320 | 99990101
003 | 20140401 | 20140402
004 | 20140501 | 20250901
這基本上就是我希望的結果:
User Eff_Date End_Date Otherstuff...
----|-------------|------------|---------
001 | 20140101 | 99990101
002 | 20140201 | 99990101
003 | 20140401 | 20140402
004 | 20140501 | 20250901
這裏是我的嘗試:
SELECT DISTINCT M.user, T.mineffdate, T.maxenddate, A.otherstuff
FROM tbluser M
LEFT JOIN otherstuff A ON A.[user]=M.[user]
INNER JOIN (SELECT user, MAX(m.end_date) as maxenddate, MIN(m.eff_date) as mineffdate FROM tbluser M GROUP BY user) T ON T.user = M.user AND T.maxenddate = m.end_date AND T.mineffdate = M.eff_date
當我跑了這一點,用戶喜歡003和004以上的顯示沒問題,但像001和002這樣的用戶根本沒有出現。
我對SQL很新,所以我可能會犯一個非常基本的錯誤。隨時讓我知道如果是這樣的話。另外,我無法控制數據源,所以我無法在源代碼中修復此問題。我發現的唯一原因是通過使用SQL輸出每個用戶記錄,然後使用VBA來組裝記錄。不幸的是,這不是一個長期的解決方案。
請讓我知道如果您需要更多的信息,我欣賞一切,向正確的方向微調可能足以幫助我解決這個問題。再次感謝您的時間!
你使用的是什麼sql平臺?使用MySQL,SQL Server等適當標記帖子等。 – paqogomez
對不起,SQL-Server 2012. – Wolves
好吧,「otherstuff」與最短日期或最長日期在同一行。那麼你想要哪個「otherstuff」?最小日期的日期,還是最大日期的日期?這是用戶1和用戶2遇到的問題:分鐘日期與最大日期不在同一行上! –