我有一個工作的查詢,將來自我的數據庫返回的一些結果(記錄),如:方式與同一ID查找行只保留一行
123|John Williams|IL|M|06/01/2011|ACTIVE
124|Mary Haque|NY|F|TERMINATED|06/30/2011
124|Mary Haque|NY|F|07/01/2011|ACTIVE
125|Alex Chan|VA|07/01/2011|ACTIVE
126|Rob Kreb|VA|TERMINATED|06/20/2011
正如你所看到的,結果是隻是一個客戶記錄列表,而最後兩個字段則表示該成員是處於活動狀態還是終止狀態以及關聯的活動/終止日期。
現在的複雜情況是,您可以看到ID 124(Mary Haque)的成員,她有兩條記錄,對於這種雙記錄客戶,我只想保留該成員處於活動狀態的行而完全無視她終止的歷史。因此,例如,對於上述所需的輸出應該是:
123|John Williams|IL|M|06/01/2011|ACTIVE
124|Mary Haque|NY|F|07/01/2011|ACTIVE
125|Alex Chan|VA|07/01/2011|ACTIVE
126|Rob Kreb|VA|TERMINATED|06/20/2011
,你可以看到,現在瑪麗·哈克只有她的結果積極的信息。上面的結果是由SQL「Select」查詢生成的,但我不能簡單地將「WHERE status = ACTIVE」附加到此查詢中,因爲我仍想保留僅具有像Rob Kreb一樣記錄的成員,即使他終止。我只希望在某個成員有兩條記錄時進行TERMINATED成員記錄的過濾。
僅供參考,我目前的查詢如下所示:
SELECT * FROM customer_change WHERE CUSTOMER_LOGIN NOT IN(SELECT CUSTOMER_LOGIN FROM customer_full WHERE CUSTOMER_LOGIN IS NOT NULL)
UNION
SELECT * FROM customer_change WHERE CUSTOMER_POINTS=0 AND CUSTOMER_LOGIN NOT IN(SELECT CUSTOMER_LOGIN FROM customer_full WHERE CUSTOMER_POINTS=0 AND CUSTOMER_LOGIN IS NOT NULL)
感謝您的幫助提前!
爲什麼你將日期存儲爲字符串而不是日期? –
修復標題以匹配您的問題。 –
另外,儘量不要使用UNION,總會有更好的方法。 –