2012-05-23 66 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) –