Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подсчёт количества клиентов с болезнью  [new]
Takashi
Member

Откуда:
Сообщений: 9
Имеются две таблицы:
Таблица Patient это наши пациенты, которые имеют:
1 идентификатор PatientId
2 ссылку на город проживания CityId
3 ссылку на диагноз: IcdItemId

Таблица IcdItem это древовидная таблица диагнозов (если у диагноза есть родитель, в таблице есть на него ссылка). Они имеют:
1 идентификтор IcdItemId
2 код/шифр ItemNo
3 название ItemName
4 ссылку на родителя IcdItemParent
5 уровень в дереве (чем больше, тем большая вложенность): TreeLevel
6 параметр по которому их можно отсортировать SortOrder
Скрипт создания таблиц можно скачать тут https://ru.files.fm/u/memy9gp6
Нужен отчёт, логика такова, что если у пациента "Тиф и паратиф", который является дочерним элементом "Кишечных инфекций", которые, в свою очередь, являются под элементом "Некоторых инфекционных и паразитарных болезней", то мы должны прибавить 1 ко всем узлам т.е. мы одним запросом считаем у скольких пациентов какая-нибудь из форм "Некоторых инфекционных и паразитарных болезней", с детализацией по подгруппам и по подгруппам подгрупп и так далее до бесконечности. При этом для наглядности нужно сделать отступы в зависимости от уровня вложенности диагноза.
Примерный результат:[IMG]https://cdn1.savepice.ru/uploads/2018/2/2/9e80b5ebd7c0c58e49b91b4f30771f9a-full.jpg[/IMG]

SELECT
REPLICATE(' ',[TreeLevel])+[ItemNo]+':'+' '+[ItemName] as name
,[TreeLevel]
,[SortOrder]
,s.[ICDItemId]
,[ICDItemParent]
,case when [PatientId] is null then 0 else 1 end as id_Patient
,left([ItemNo],3) as key_id
into #a1
FROM [dbo].[ICDItem] as s
left join [dbo].[Patient] as p on s.ICDItemId=p.IcdItemId
ORDER BY [SortOrder];


SELECT *
FROM #a1 as t1
JOIN #a1 as t2 on t1.ICDItemId=t2.[ICDItemParent]
order by t2.SortOrder

Дальше не могу сообразить

Модератор: Тема перенесена из форума "MySQL".


Сообщение было отредактировано: 9 фев 18, 16:55
2 фев 18, 00:23    [21159276]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить