所以我正在嘗試(實際上使它在 MySql 中作業)從源表中獲取 3 列,僅基于這 3 列中的 2 列洗掉其重復項(這就是我需要磁區和 row_number 的原因),一旦洗掉重復項,如果這兩個相同的值尚不存在,我將檢查目標表。
但是現在我必須通過 MS Access 并發現不支持partition by和row_number()。
任何方法將不勝感激
這是查詢:
INSERT INTO TARGET_TABLE (COL1, CV1, CV2)
SELECT st.DontCareValue, st.CV1, st.CV2
FROM(
select DontCareValue, CV1, CV2,
row_number() over (partition by CV1, CV2 order by DontCareValue) as rn
From sourceTable
where length(CV1) >= 2) st
where st.rn = 1
and not exists(select 1 from TARGET_TABLE tt
where tt.CV1= st.CV1
and tt.CV2 = st.CV2)
uj5u.com熱心網友回復:
這就是影子所說的:
請記住,在新的有用分析功能之前,過去存在相同的問題。你只需要從那時起找到合適的設計模式。您得到 RN=1,這將是每個 CV1、CV2 組的 DontCare 的最小值。所以只需在你的 su 中使用 min
INSERT INTO TARGET_TABLE (COL1, CV1, CV2)
SELECT st.MinDontCareValue, st.CV1, st.CV2
FROM (SELECT Min(DontCareValue) MinDontCareValue, CV1, CV2
FROM sourceTable
WHERE length(CV1) >= 2
GROUP BY CV1, CV2) st
WHERE not exists (SELECT 1
FROM TARGET_TABLE tt
WHERE tt.CV1= st.CV1
AND tt.CV2 = st.CV2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/437207.html
上一篇:將具有重復默認資料的列插入查詢
