Re: [SQL ] 如何刪除Table中不同列且不同欄位重覆值?

看板Database作者 (喝酒做愛不談戀愛)時間8年前 (2016/03/27 21:58), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串3/4 (看更多)
※ 引述《seabok (思念,留在1999)》之銘言: : 資料庫名稱:MS SQL : 資料庫版本:2008 : 內容/問題描述: : 請問各位賢拜: : 有一Table A如下: : ID UPDate OldValue NewValue : 001 2016/3/24 AAA BBB : 002 2016/3/23 CCC DDD : 002 2016/3/24 DDD CCC : 需求是想撈出在日期區間內有異動的資料,也就是最終的OldValue <> NewValue。 : 可是在表中第2、3列,ID=002的資料在3/23先是自CCC改成DDD, : 然後在3/24又自DDD改回CCC,最終結果其實是沒有異動。 : 請問SQL該如何下才能直接排除這種情形呢?(也就是只有ID=001這筆符合) : 先感謝大家了~ 另一種解法: ;WITH A AS ( SELECT * , FIRST_VALUE(oldvalue) OVER (PARTITION BY ID ORDER BY [Update] ROWS UNBOUNDED PRECEDING) AS 'First' , LAST_VALUE(newvalue) OVER (PARTITION BY ID ORDER BY [Update] ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS 'Last' FROM table1 ) SELECT * FROM A WHERE First <> Last 我用SQL 2014, 2008 能不能跑要試試看。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 116.241.200.131 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1459087104.A.05B.html

03/27 23:42, , 1F
感謝,我再試試~
03/27 23:42, 1F

03/28 00:32, , 2F
不錯,推。剛剛看MSDN,2012以後才支援
03/28 00:32, 2F
文章代碼(AID): #1Mz-S01R (Database)
討論串 (同標題文章)
文章代碼(AID): #1Mz-S01R (Database)