AZ93 Ответов: 1

Группировка в SQL - аккаунтах и сборах


Попытка написать оптимизированный запрос, потому что таблица огромна.

Давайте посмотрим у вас есть пациенты и заряды

Acctnumber |ChargeCode
А |103567
А |105678
А |103567
А |105678
B |345356
B |105678
B |234035
C |105678
D |403567
Д |505678

Мне нужен запрос, чтобы выбрать все счета, на которых есть только сборы, начинающиеся с 10. Таким образом, результат будет
Acctnumber |ChargeCode
А |103567
А |105678
А |103567
А |105678
C |105678

Счет B также имеет код оплаты 10, но у него есть и другие коды. Нам нужно только 10 кодов.

Что я уже пробовал:

Я попытался написать запрос через in (chargecode10) и не существует, но это медленный способ сделать это.

Дайте мне знать, если кто-то знает лучший способ

1 Ответов

Рейтинг:
0

Mike V Baker

Является ли ChargeCode строкой?

Выберите Acctnumber, ChargeCode из PatientCharges, где ChargeCode похож на " 10%";

Если это число ...

Выберите Acctnumber, ChargeCode из PatientCharges, где LTRIM(STR(ChargeCode,10)) Например, " 10%";


AZ93

Это также потянет счет B, потому что у B также есть 10 зарядов. Нам нужно только выбрать счета только с 10% - ными сборами и больше ни с кем.
результат должен быть только A и C

Mike V Baker

Выберите Acctnumber, ChargeCode от PatientCharges где ChargeCode как '10%' и AcctNumber не в (Выбрать DISTINT AcctNumber от PatientCharges где ChargeCode не нравится '10%');

?- Не уверен, сколько времени это займет. О скольких записях идет речь? Индексируется ли ChargeCode?

AZ93

Это именно то, что я делал, но мы говорим о миллионах записей