6

我正在尝试从(设计不佳的)sql 数据库中创建一个新的数据提取。客户要求我添加一个我尝试使用 NEWID() 函数执行的 distinctidentifier。不幸的是,这会导致返回多个重复记录。

经过一番研究,我发现 NEWID() 函数确实“撤消”了 distinct 关键字的使用,但我无法弄清楚为什么或如何克服这个问题。

我尝试编写的查询示例如下:

select distinct

    NEWID() as UUID
    ,Histo_Results_File.ISRN
    ,Histo_Results_File.Internal_Patient_No
    ,Histo_Results_File.Date_of_Birth
    ,Histo_Result_freetext.histo_report
    ,Histo_Report.Date_Report_Updated  as [Investigation_Result_Date]

from apex.Histo_Results_File
            inner join apex.Histo_Report on (Histo_Report.Histo_Results_File = Histo_Results_File.ID)

如果我错过了选择块中的 NEWID() 行,我会返回 569 条记录,这是正确的,但如果我包含该行,那么我会得到超过 30,000 条记录,这些记录都是原始 569 条的重复,但 ID 不同。任何人都可以提出解决这个问题的方法吗?

提前致谢

4

3 回答 3

6

使用子查询将是最简单的方法。

SELECT NEWID() as UUID
, * -- this is everything from below
FROM (
select distinct
     Histo_Results_File.ISRN
    ,Histo_Results_File.Internal_Patient_No
    ,Histo_Results_File.Date_of_Birth
    ,Histo_Result_freetext.histo_report
    ,Histo_Report.Date_Report_Updated  as [Investigation_Result_Date]

from apex.Histo_Results_File
            inner join apex.Histo_Report on (Histo_Report.Histo_Results_File = Histo_Results_File.ID)) as mySub
于 2015-08-27T15:18:50.090 回答
1
select NEWID() as UUID
    ,ISRN
    ,Internal_Patient_No
    ,Date_of_Birth
    ,histo_report
    ,Investigation_Result_Date
from (
select distinct
    ,Histo_Results_File.ISRN
    ,Histo_Results_File.Internal_Patient_No
    ,Histo_Results_File.Date_of_Birth
    ,Histo_Result_freetext.histo_report
    ,Histo_Report.Date_Report_Updated  as [Investigation_Result_Date]

from apex.Histo_Results_File
            inner join apex.Histo_Report on (Histo_Report.Histo_Results_File = Histo_Results_File.ID)) t
于 2015-08-27T15:19:31.273 回答
0

您可以使用子查询来解决此问题,例如.....

SELECT NEWID() as UUID
      ,*
FROM (
select distinct
     Histo_Results_File.ISRN
    ,Histo_Results_File.Internal_Patient_No
    ,Histo_Results_File.Date_of_Birth
    ,Histo_Result_freetext.histo_report
    ,Histo_Report.Date_Report_Updated  as [Investigation_Result_Date]

from apex.Histo_Results_File
            inner join apex.Histo_Report 
 on (Histo_Report.Histo_Results_File = Histo_Results_File.ID)
 ) t
于 2015-08-27T15:18:42.857 回答