Как отобразить отличительные значения в cfoutput - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть запрос, который возвращает результаты из базы данных.Возвращает дублированную информацию.Я хотел бы предотвратить показ дубликатов данных.

Под дублирующими данными я подразумеваю, что столбцы Дата приема , Дата обслуживания и Дата выписки повторяют те же данные (в этомтематические даты).Таким образом, если дата - 10/05/2019, для даты приема она будет повторяться 2 или более раз.Это связано со столбцом Дата процесса , в котором процесс отправки запроса выполнялся в разные даты, а другие даты повторяются дважды.

Duplicate Dates

Первоначально я пытался использовать SELECT DISTINCT Column1, Column2, ... FROM Data в своем запросе, но он выдает ошибки.Вот ошибка, которую я получаю:

Ошибка при выполнении запроса к базе данных.[Macromedia] [Драйвер JSBC SQLServer] [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 голосов
/ 18 сентября 2018

Перво-наперво, это чисто проблема 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...