如何在cfoutput中显示不同的值

时间:2018-09-17 19:41:07

标签: sql-server tsql coldfusion

我有一个查询,该查询从数据库返回结果。它返回重复的信息。我想防止显示重复的数据。

重复数据的意思是,准入日期服务日期出院日期列重复相同的数据(在此案件日期)。因此,如果日期是10/05/2019,则对于``录取日期'',它将重复日期两次或更多次。这是由于处理日期列所致,在该列中,提交查询的过程是在不同的日期进行的,并导致其他日期重复两次。

Duplicate Dates

我最初尝试在查询中使用SELECT DISTINCT Column1, Column2, ... FROM Data,但错误提示。以下是我得到的错误:

  

错误执行数据库查询。 [Macromedia] [SQLServer JDBC   驱动程序] [SQLServer]无法将文本数据类型选择为DISTINCT   因为它不可比。

我在做什么错?任何帮助将不胜感激

这是我最近的尝试:

<cfquery name="name" datasource="source">
        SELECT First_Name, 
               Last_Name, 
               DOB, Sex, 
               Service, 
               Service_Desc, 
               Distinct(service_dt) AS Service_Dt, 
               Distinct(admit_dt) AS Admit_Dt, 
               Phone, 
               Address1, 
               Address2, 
               City, 
               State, 
               Zip, 
               Account, 
               Hosp_Name,
               MR_Number, 
               Insurance, 
               Plan_Name, 
               Policy_No, 
               Group_No, 
               Reason_For_Visit, 
               Distinct(process_dt) AS Process_Dt,
               Distinct(discharge_dt) AS Discharge_Dt,
               [Pt Class] as PtClass
        FROM DATA
        WHERE 
            First_Name = <cfqueryparam value="#FName#" cfsqltype="cf_sql_varchar">
            AND
            Last_Name = <cfqueryparam value="#LName#" cfsqltype="cf_sql_varchar">
            AND
            DOB = <cfqueryparam value="#BirthDt#" cfsqltype="cf_sql_varchar">
            AND
            Hosp_Name like <cfqueryparam value="#Hosp#" cfsqltype="cf_sql_varchar">
    </cfquery>

1 个答案:

答案 0 :(得分:4)

首先,这纯粹是一个SQL问题,而不是一个ColdFusion问题。

您的数据对于所有记录都是一致的,不同的日期列除外?假设user_id = 1有四个记录:

| user_id | admit_date | service_date | process_date | discharge_date |
| ------- | ---------- | ------------ | ------------ | -------------- |
| 1       | 2018-01-01 | 2018-01-01   | 2018-01-02   | 2018-01-05     |
| 1       | 2018-01-01 | 2018-01-02   | 2018-01-02   | 2018-01-05     |
| 1       | 2018-01-01 | 2018-01-03   | 2018-01-03   | 2018-01-05     |
| 1       | 2018-01-01 | 2018-01-04   | 2018-01-04   | 2018-01-05     |

这是您一个人的数据的样子吗?

我在想这个数据只是一个汇总的数据转储,所以admit_date对于所有4条记录都是一样的,discharge_date也是如此。每个记录的其他两个日期都不同。因为该用户的名字,姓氏,出生日期相同,并且在同一家医院,所以它与您的查询条件匹配。

如果这是好的数据,那么选择一个独特的admit_date会给我4条记录,而选择一个独特的discharge_date也可以。

  • 您是否要查找此用户或所有用户的最新记录?
  • 您要找到第一个吗?
  • 您实际上是想从这些数据中提取什么?

如果要显示按单个日期分组的数据输出,这很简单:

<cfoutput query="qData" group="user_id">
    <!--- Output User Info here. --->
    <cfoutput group="admit_date">
        <!--- 
            This will loop over all records of the same 
            admit_date for the current user ID. 
        --->
        <cfoutput>
            More output.
        </cfoutput
    </cfoutput>
</cfoutput>