2014-10-28 4 views
0

Access 데이터베이스에서 SQL Server로 마이그레이션 된 쿼리가 거의 없습니다. 그러나 결과는 동일하지 않습니다. 아래는 Access와 SQL의 쿼리입니다. 아무도 쿼리에 문제가 있으면 알려주십시오.MS Access to SQL Query

Query 1 in MS Access 
SELECT [TableA].Mat, [TableA].Sg, [TableA].Pt, [TableB].[Ptype] 
FROM [TableA] INNER JOIN [TableB] ON [TableA].Sg=[TableB].Sg 
WHERE ((([TableA].Dl)="04") And [TableB].[Ptype]<>"dummy") - TableFinal 

Query2 in MS Access 
SELECT DISTINCT TableFinal.Mat, TableFinal.Sg, IIf(TableFinal.Pt Is Null,[TableD].Pt,TableFinal.Pt) AS Pnt, [TableC].[Ptype] 
FROM (TableFinal INNER JOIN [TableC] ON TableFinal.Sg=[TableC].Sg) INNER JOIN [TableD] ON ([TableC].Pt=[TableD].Pt) AND (TableFinal.Mat=[TableD].Mat) 
WHERE ((([TableC].[Ptype])<>"dummy")); 

Combined Query1&2 in SQL 
SELECT DISTINCT [TableA].Mat, [TableA].Sg, ISNULL([TableA].Pt, [TableC].Pt) AS Pln, 
[TableB].[Ptype] 
FROM [TableA] INNER JOIN 
[TableB] ON [TableA].Sg = [TableB].Sg INNER JOIN 
[TableC] ON [TableB].Pt = [TableC].Pt AND 
[TableA].Mat = [TableC].Mat 
WHERE ([TableB].[Ptype] <> 'dummy') AND ([TableA].Dl = '04') - Final 


Query3 in MS Access 
SELECT DISTINCT Final.Mat, Final.Sg, Final.Pt, IIf([TableB].[Ptype] Is Null,Final.[Ptype],[TableB].[Ptype]) AS [Pan] 
INTO Destination 
FROM [TableB] RIGHT JOIN Final ON ([TableB].Pt=Final.Pt) AND ([TableB].Sg=Final.Sg); 



Query3 in SQL 
SELECT DISTINCT Final.Mat, Final.Sg, Final.Pt, 
ISNULL(TableB].[Ptype], Final.[Ptype]) AS [Ptype] 
FROM TableB] RIGHT OUTER JOIN 
Final ON [TableB].Pt = Final.Pt AND 
[TableB].Sg = Final.Sg 
+1

다른 ** 방법 **? –

+0

SQL에서 편집 된 쿼리를 사용할 때 데이터가 표시되지 않습니다. 내 관심사는 올바른 방법으로 쿼리를 편집 한 경우입니다. – AllPigsREqual

답변

0

잘 모르겠어요,하지만이 당신의 의도를 생각 :

--Combined Query1&2 in SQL 
SELECT DISTINCT 
    [TableA].Mat, 
    [TableA].Sg, 
    ISNULL([TableA].Pt, [TableC].Pt) AS Pln, 
    [TableB].[Ptype] 
INTO 
    #FINAL 
FROM 
    [TableA] 
    INNER JOIN [TableB] ON [TableA].Sg = [TableB].Sg 
    INNER JOIN [TableC] ON [TableB].Pt = [TableC].Pt AND 
         [TableA].Mat = [TableC].Mat 
WHERE 
    ([TableB].[Ptype] <> 'dummy') AND 
    ([TableA].Dl = '04') 

--Query3 in SQL 
SELECT DISTINCT 
    Final.Mat, 
    Final.Sg, 
    Final.Pln, --Final.Pt, 
    ISNULL([TableB].[Ptype], Final.[Ptype]) AS [Ptype] 
FROM 
    [TableB] 
    RIGHT OUTER JOIN #FINAL AS Final ON [TableB].Pt = Final.Pln AND 
             [TableB].Sg = Final.Sg 
+0

내가 작성한 쿼리와 제공 한 쿼리 모두 동일했습니다. 새로운 데이터로드 후에 '04'와 같은 값이 없었기 때문에 결과가 표시되지 않았습니다. – AllPigsREqual