2010-09-20 2 views
0

Я пытаюсь запросить базу данных управления практикой клиники, чтобы вернуть набор данных, который соответствует любому в списке значений (коды icd-9) для четырех разных полей, но то только верните номер идентификатора для пациента или только первую запись для этого пациента, у которой есть один из кодов icd-9. Затем я планирую финализировать некоторый дополнительный отчет, чтобы предоставить мне остальную часть данных, которые мне нужны для пациента, включая коды icd-9 для последнего случая/посещения.Удаление записей с одинаковым идентификатором в выбранном наборе данных (ADS)

Программное обеспечение генерирует что-то вроде следующего:

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, и подумал, что мне нужно было DISTINCT, но это только проверяет, отлична ли вся запись, а не только идентификатор.

- Layman с использованием Advantage Database Server и программного обеспечения для отчетности, которое каким-то образом может быть привязано к Crystal Reports.

+0

Кроме того, где можно подняться, чтобы ускорить это? Большинство людей берут курс или являются ли эти оригинальные документы по реляционным базам данных доступными? – Radix

+0

Не полный ответ, но вы можете сделать SELECT TOP 1 .... только для возврата первого удара. – JNK

+0

Удивительный, спасибо! – Radix

ответ

3

Для тестирования вы захотите иметь Advantage Data Architect, загружаемый из Advantage DevZone. http://devzone.advantagedatabase.com Кроме того, вам понадобится полный файл справки, который включает в себя копию чудесного «Advantage Database Server» разработчика Cary Jensen, «Руководство разработчика», доступного в том же месте, что поможет вам с ускорением работы на SQL в Advantage и 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'); 

И если вам нужно сделать это в кристалл, вы можете создать этот набор накидной используя раздел AddCommand ... просто убедитесь, что вы используете Advantage Crystal Driver, настроены правильно и доступны ... вы догадались ... Advantage Devzone

Надеюсь, что это поможет.

+0

Какой фантастический ответ! Это очень ясно, спасибо. Мне потребовалось некоторое время, чтобы получить это право, из-за некоторой путаницы в роли запятых в синтаксисе SQL, но я вышел с: – Radix

+0

Какой фантастический ответ! Это очень ясно, спасибо. Мне потребовалось некоторое время, чтобы получить это право, из-за некоторой путаницы в роли запятых в синтаксисе SQL, но я вышел с: http://pastebin.com/wN3LTKZ4 Я думаю, что у меня есть правильное понимание того, что происходит, но все еще есть дубликаты. Если кто-нибудь скажет мне, почему я буду этому признателен, иначе я добавлю TOP и сделаю это. Не следует ли сопоставлять идентификатор набора UNION с идентификатором установленного «номера диаграммы» (который является MWTRN. «Chart Number»), а затем отказаться от дополнительного? – Radix

+0

Нет, TOP 1 возвращает только первое значение набора результатов. Один «Диаграммный номер». – Radix