看板 Database 關於我們 聯絡資訊
除了"撈資料出來運算後, 再將結果插回另一個表"這種通用的做法外, 針對這個案還有一種"直接(但特殊)做運算, 再將結果插到另一個表" 的做法. 假設number是'遞增且規律的', 可以利用它來做'假性外鍵'(概念上), 用來連結相鄰兩筆記錄, 使其在同一列, 然後就可以直接拿兩個time 欄位做比較, 決定要保留或去除. 若number不符合這個規律, 那麼採用 列號亦可, 不過'列號'這東西就對資料庫有依附性, 不同廠商的資料庫 對於列號的支援度及SQL語法稍有不同, 缺乏適用性. 所以這只是玩 SQL語法而已, 並沒有比較好用. 以下還是稍微解說一下我的想法: 假設number是遞增且規律, 就是相鄰兩列都只差一, 沒有跳號的狀況: select R1.* from records as R1 left join records as R2 on R2.number=R1.number+1 where mysql函式(R2.time-R1.time>=3min) [插入到另一個結構相同,內容為空的表]. ※ 引述《yiyuanli (阿災)》之銘言: : 請問 : 我在Acceess裡 有個主資料表 : 假設有幾筆資料和欄位如下 : [item] [number] [day] [time] : 1 001 2009/04/02 下午 01:12:00 : 1 002 2009/04/02 下午 01:22:00 : 1 003 2009/04/02 下午 01:23:00 : 1 004 2009/04/02 下午 01:33:00 : 1 005 2009/04/02 下午 01:34:00 : 1 006 2009/04/02 下午 01:35:00 : 1 007 2009/04/02 下午 01:39:00 : 1 008 2009/04/02 下午 01:40:00 : 我想要的規則是 第一筆跟第二筆 時間去比 : 因為 01:22:00 - 01:12:00 = 00:10:00 >=3min 所以第一筆的資料會保留 : 然後 二跟三做運算 因為沒有符合 >=3min 所以 第二筆會被去除 : 再來 三跟四做運算 符合 >=3min 所以 第三筆會被保留 : 以此類推 : 簡單來說就是 1跟2結果 符合(>=3min) 1保留 : 2跟3結果 不符合 2去除 : 3跟4結果 符合 3保留 : 查詢結果應該是要 : [item] [number] [day] [time] : 1 001 2009/04/02 下午 01:12:00 : 1 003 2009/04/02 下午 01:23:00 : 1 006 2009/04/02 下午 01:35:00 : 請問Access想要得到上述結果該怎麼做? : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.186.206
yiyuanli:可惜 我的表是當天的醫師看診情形 會有跳號的情況 04/03 12:52
yiyuanli:感謝回答 把欄位下一筆的data當作新的欄位就可做換算 04/03 13:09
yiyuanli:我會試看看 再次感謝幫助我的你 04/03 13:15