Sql 删除所选数据集中具有相同ID的记录(ADS)

Sql 删除所选数据集中具有相同ID的记录(ADS),sql,advantage-database-server,Sql,Advantage Database Server,我试图查询一个诊所管理数据库,以返回一个数据集,该数据集与四个不同字段的值列表(icd-9代码)中的任何值相匹配,但随后仅返回患者的id号,或仅返回具有icd-9代码之一的患者的第一条记录。然后,我计划编造一些子报告,为我提供患者所需的其他数据,包括上次病例/就诊的icd-9代码 软件生成如下内容: SELECT DISTINCT MWTRN."Chart Number" AS Chart_Number, MWTRN."Diag

我试图查询一个诊所管理数据库,以返回一个数据集,该数据集与四个不同字段的值列表(icd-9代码)中的任何值相匹配,但随后仅返回患者的id号,或仅返回具有icd-9代码之一的患者的第一条记录。然后,我计划编造一些子报告,为我提供患者所需的其他数据,包括上次病例/就诊的icd-9代码

软件生成如下内容:

SELECT DISTINCT 
                MWTRN."Chart Number" AS Chart_Number, 
                MWTRN."Diagnosis Code 1" AS Diagnosis_Code_1, 
                MWTRN."Diagnosis Code 2" AS Diagnosis_Code_2, 
                MWTRN."Diagnosis Code 3" AS Diagnosis_Code_3, 
                MWTRN."Diagnosis Code 4" AS Diagnosis_Code_4, 
                MWTRN."Date From" AS Date_From, 
                MWTRN."Date To" AS Date_To, 
                MWPAT."First Name" AS First_Name, 
                MWPAT."Last Name" AS Last_Name
FROM MWTRN MWTRN, MWPAT MWPAT
WHERE 
      (MWPAT."Chart Number" = MWTRN."Chart Number")
GROUP BY MWTRN."Chart Number", 
         MWTRN."Diagnosis Code 1", 
         MWTRN."Diagnosis Code 2", 
         MWTRN."Diagnosis Code 3", 
         MWTRN."Diagnosis Code 4", 
         MWTRN."Date From", MWTRN."Date To", 
         MWPAT."Last Name", MWPAT."First Name"
生成数据集后,如何返回并配对结果

我已经阅读了几个广告支持的SQL教程站点来阅读生成的SQL,并认为我需要的是不同的,但这只是检查整个记录是否不同,而不仅仅是ID


--外行使用Advantage数据库服务器和报告软件,这些软件可能以某种方式与Crystal Reports绑定。

出于测试目的,您需要Advantage Data Architect,可从Advantage DevZone下载。此外,您还需要完整的帮助文件,其中包括Cary Jensen精彩的“Advantage Database Server,开发者指南”的副本,该文件在同一位置提供,它将帮助您快速了解Advantage中的SQL以及一般的SQL。 你有两个选择,具体取决于你想要实现的目标。 您可以创建一个SQL脚本,并将语句放入一个临时表中,如中所示

Select into #MyTemp --all the rest of the complex SQL command--
然后你可以用这个文件做你想做的事情来缩减它。但是,如果您只需要具有特定诊断代码的患者列表,您可以执行以下操作

Select pat.id, pat.name, pat.address from pat where pat.id in (Select id from tran where diag1 in ('123.3','123.4') UNION Select id from tran where diag2 in ('123.3','123.4') UNION
Select id from tran where diag3 in ('123.3','123.4') UNION Select id from tran where diag4 in ('123.3','123.4');
如果您需要在Crystal中执行此操作,您可以使用AddCommand部分创建该联合集…只需确保您使用的是Advantage Crystal驱动程序,设置正确,并且可以从…猜到…Advantage Devzone获得


希望对您有所帮助。

出于测试目的,您需要Advantage Data Architect,可从Advantage DevZone下载。此外,您还需要完整的帮助文件,其中包括Cary Jensen精彩的“Advantage Database Server,开发者指南”的副本,该文件在同一位置提供,它将帮助您快速了解Advantage中的SQL以及一般的SQL。 你有两个选择,具体取决于你想要实现的目标。 您可以创建一个SQL脚本,并将语句放入一个临时表中,如中所示

Select into #MyTemp --all the rest of the complex SQL command--
然后你可以用这个文件做你想做的事情来缩减它。但是,如果您只需要具有特定诊断代码的患者列表,您可以执行以下操作

Select pat.id, pat.name, pat.address from pat where pat.id in (Select id from tran where diag1 in ('123.3','123.4') UNION Select id from tran where diag2 in ('123.3','123.4') UNION
Select id from tran where diag3 in ('123.3','123.4') UNION Select id from tran where diag4 in ('123.3','123.4');
如果您需要在Crystal中执行此操作,您可以使用AddCommand部分创建该联合集…只需确保您使用的是Advantage Crystal驱动程序,设置正确,并且可以从…猜到…Advantage Devzone获得


希望这能有所帮助。

此外,在这类事情上,人们在哪里能跟上进度?大多数人都参加了这门课程吗?或者那些关于关系数据库的原始论文是可以访问的吗?这不是一个完整的答案,但你可以选择前1。。。。只返回第一次命中。还有,在这类事情上,人们从哪里开始加速?大多数人都参加了这门课程吗?或者那些关于关系数据库的原始论文是可以访问的吗?这不是一个完整的答案,但你可以选择前1。。。。只返回第一个点击。多么美妙的回应!这很清楚,谢谢。由于对逗号在SQL语法中的作用有些混淆,我花了一段时间才弄清楚这一点,但我得出的结论是:这是一个多么美妙的回答!这很清楚,谢谢。由于对逗号在SQL语法中的作用有些混淆,我花了一段时间才弄清楚这一点,但我得出结论:我认为我对正在发生的事情有正确的理解,但仍然存在重复。如果有人能告诉我为什么我会感激它,否则我会添加顶部,并完成它。联合集的ID是否应该与“图表编号”集(即MWTRN。“图表编号”)的ID匹配,然后删除多余的?否,TOP 1仅返回结果集的第一个entrie。一个单一的“图表编号”。但是现在可以使用DISTINCT:)现在我只需要做一个子报告。多么奇妙的回答!这很清楚,谢谢。由于对逗号在SQL语法中的作用有些混淆,我花了一段时间才弄清楚这一点,但我得出的结论是:这是一个多么美妙的回答!这很清楚,谢谢。由于对逗号在SQL语法中的作用有些混淆,我花了一段时间才弄清楚这一点,但我得出结论:我认为我对正在发生的事情有正确的理解,但仍然存在重复。如果有人能告诉我为什么我会感激它,否则我会添加顶部,并完成它。联合集的ID是否应该与“图表编号”集(即MWTRN。“图表编号”)的ID匹配,然后删除多余的?否,TOP 1仅返回结果集的第一个entrie。一个单一的“图表编号”。但现在可以使用DISTINCT:)现在我只需要制作子报告。