2014-10-28 83 views
0

我有幾個查詢已經從Access DB遷移到SQL Server。但結果並不相同。以下是Access和SQL中的查詢。任何人都可以讓我知道,如果查詢有任何問題。對SQL查詢的MS訪問

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

不同** **如何? – 2014-10-28 21:47:06

+0

當我在SQL中使用編輯後的查詢時,沒有數據顯示。我的關注是如果我以正確的方式編輯查詢。 – AllPigsREqual 2014-10-28 21:49:23

回答

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 2014-10-29 10:52:14