我有一个查询,该查询从数据库返回结果。它返回重复的信息。我想防止显示重复的数据。
重复数据的意思是,准入日期,服务日期和出院日期列重复相同的数据(在此案件日期)。因此,如果日期是10/05/2019,则对于``录取日期'',它将重复日期两次或更多次。这是由于处理日期列所致,在该列中,提交查询的过程是在不同的日期进行的,并导致其他日期重复两次。
我最初尝试在查询中使用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>
答案 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>