2012-05-23 64 views
0

以下代碼來自MS Access,並且我試圖將其轉換爲使其在SQL Server中正常工作。我不知道如何轉換最後一行,其中包含IsNull。 P.S:LIS是驅動器的名稱。 感謝任何能給我提示的人。將MS Access中的VBA代碼轉換爲SQL服務器

SELECT DISTINCT [Molecular Pathology].[ID#], [Molecular Pathology].[Last Name], 
[Molecular Pathology].[First Name], [Molecular Pathology].Gender, 
[Molecular Pathology].[Date of Birth], [Molecular Tests].[Test Type], 
[Molecular Pathology].[Testing Gene], [Molecular Pathology].[Testing Exon], 
[Molecular Pathology].[Tested Mutation], [Molecular Pathology].[Testing Gene 2], 
[Molecular Pathology].[Testing Exon 2], [Molecular Pathology].[Tested Mutation 2], 
[Molecular Tests].[Test Name], [Molecular Pathology].[Result Reported], 
[Molecular Pathology].[Date Received], [Molecular Pathology].[gp#] 
FROM ([Molecular Pathology] 
LEFT JOIN [Molecular Select Tests] 
    ON [Molecular Pathology].ID = [Molecular Select Tests].ForKey) 
LEFT JOIN [Molecular Tests] 
    ON [Molecular Select Tests].Test = [Molecular Tests].[Test Name] 
WHERE ((IsNull([Molecular Pathology].[LIS SignOut])<>False)); 

回答

1

只有一兩個小問題,但是你可以大大善用表的別名改善查詢的可讀性。請嘗試以下重寫:

SELECT DISTINCT 
    mp.[ID#],   mp.[Last Name],  mp.[First Name], 
    mp.Gender,   mp.[Date of Birth], mt.[Test Type],  
    mp.[Testing Gene], mp.[Testing Exon], mp.[Tested Mutation], 
    mp.[Testing Gene 2], mp.[Testing Exon 2], mp.[Tested Mutation 2], 
    mt.[Test Name],  mp.[Result Reported], mp.[Date Received], 
    mp.[gp#] 
FROM 
    dbo.[Molecular Pathology] AS mp 
LEFT OUTER JOIN 
    dbo.[Molecular Select Tests] AS mst 
    ON mp.ID = mst.ForKey -- Molecular Pathology has an ID column and an ID# column? 
LEFT OUTER JOIN 
    dbo.[Molecular Tests] AS mt 
    ON mst.Test = mt.[Test Name] 
WHERE 
    mp.[LIS SignOut] IS NULL; 
+0

您是否手動將字段排成3列,或者您是否有一個程序可以爲您執行此操作。如果你有一個程序,我可以得到它的名字嗎?謝謝。 –

+0

@TomCollins對不起,令人失望,但那只是手動空格鍵猛擊。 –

+0

哦。這裏有一個我用了很多,特別是在編碼時,因爲它會爲我建立我的代碼字符串。 [鏈接](http://www.dpriver.com/pp/sqlformat.htm) –