2009-12-02 5 views
0

SQL 테이블에 내 데이터를로드하는 코드가 있습니다. 중복 값이 ​​있으면 다른 테이블에 데이터를로드하는 방법이 있는지 알고 싶습니다. 그렇다면 나를 도울 수 있습니다. 내 질문은 :다른 테이블에 중복 삽입 찾기

'& rcdDNE ("RTN") & ",'"& rcdDNE을 "t_DATA_DneFrc (RTN, AccountNbr, 이름, 가운데 이름, 성, 금액) 값 (삽입" '("AccountNbr") & '', ''& rcdDNE ("인 firstName") & '', ''& rcdDNE ("가운데 이름") & '', ''& rcdDNE ("성") & '', ''& rcdDNE (" 금액 ") &" ")"

t_DATA_DneFrc 테이블에 데이터를 삽입합니다. 이제 중복 행이 삽입되어있는 경우 해당 행을 t_DATA_DneFrcDuplicate에 변경하고 싶습니다. 그게 가능하니?

' Write records to Database 

frmDNELoad.lblStatus.Caption = "Loading data into database......" 

Dim lngRecCount As Long 
lngRecCount = 0 
rcdDNE.MoveFirst 

With cmdCommand 
    .ActiveConnection = objConn 
    .CommandText = "insert into t_DATA_DneFrc (RTN, AccountNbr, FirstName, MiddleName, LastName, Amount) values ('" & rcdDNE("RTN") & "', '" & rcdDNE("AccountNbr") & "', '" & rcdDNE("FirstName") & "', '" & rcdDNE("MiddleName") & "', '" & rcdDNE("LastName") & "', '" & rcdDNE("Amount") & "')" 
    .CommandType = adCmdText 

End With 

Set rcddnefrc = New ADODB.Recordset 
With rcddnefrc 
    .ActiveConnection = objConn 
    .Source = "SELECT * FROM T_DATA_DNEFRC" 
    .CursorType = adOpenDynamic 
    .CursorLocation = adUseClient 
    .LockType = adLockOptimistic 
    .Open 
End With 

Do Until rcdDNE.EOF 
    lngRecCount = lngRecCount + 1 
    frmDNELoad.lblStatus.Caption = "Adding record " & lngRecCount & " of " & rcdDNE.RecordCount & " to database." 
    frmDNELoad.Refresh 
    DoEvents 
    Call CommitNew 
    rcdDNE.MoveNext 
Loop 

frmDNELoad.lblStatus.Caption = "DNE Processing Complete." 
frmDNELoad.Refresh 

End Function 
Sub CommitNew() 

'  Add records to DneFrc table 
With rcddnefrc 
    .Requery 
    .AddNew 
    .Fields![RTN] = rcdDNE.Fields![RTN] 
    .Fields![AccountNbr] = rcdDNE.Fields![AccountNbr] 
    .Fields![FirstName] = rcdDNE.Fields![FirstName] 
    .Fields![MiddleName] = rcdDNE.Fields![MiddleName] 
    .Fields![LastName] = rcdDNE.Fields![LastName] 
    .Fields![Amount] = rcdDNE.Fields![Amount] 
    .Update 
End With 

답변

3

당신은

insert into t_DATA_DneFrcDuplicate 
     (RTN, AccountNbr, FirstName, MiddleName, 
     LastName, Amount, Occurances) 
    select RTN, AccountNbr, FirstName, MiddleName, 
     LastName, Amount, COUNT(*) 
    from t_DATA_DneFrc 
    group by RTN, AccountNbr, FirstName, MiddleName, 
      LastName, Amount 
    having COUNT(*) > 1 

같이해야 할 두 번째 쿼리를 실행해야합니다 (이 오라클 구문, 희망 같은 당신을 위해 작동합니다.)

+1

없음 오라클 특정 구문을 SQL Server에서 안전해야합니다. –

+0

발생이란 무엇입니까? 나는 출현의 장소에 무언가를 써야 하나? – pbrp

+0

필자는 명확성을 위해 SELECT 절에 COUNT (*)를 포함시킨 다음이를 Occurances라는 열에 삽입한다고 생각했습니다. t_DATA_DneFrc 그룹에서 t_DATA_DneFrcDuplicate (RTN, AccountNbr, 이름, 가운데 이름, 성, 금액) 선택 RTN, AccountNbr, 이름, 가운데 이름, 성, 금액 에 삽입하여 : 당신은에 물론이 없습니다 RTN, AccountNbr, FirstName, MiddleName, 성, 금액 (COUNT (*)> 1) –