Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Anastasia1495 Member Откуда: Сообщений: 4 |
Подскажите пожалуйста, как мне сделать группировку вот этого:SELECT TOP 100 MOTCONSU.DATE_CONSULTATION, PATIENTS.PATIENTS_ID, LAB_METHODS.LABEL, DS_RESTESTS.VAL, DS_RESTESTS.DS_RESTESTS_ID, (case when MEDECINS.NOM is null then 'Без направления' else (MEDECINS.NOM+' '+Substring(MEDECINS.PRENOM,1,1)+'. '+ +Substring(Substring(MEDECINS.PRENOM,CharIndex(' ',MEDECINS.PRENOM+ ' ',0)+1,100),1,1)+'.') end ) DOC , (select DS_RESTESTS.VAL where DS_RESTESTS.ITEM=1) F1, (select DS_RESTESTS.VAL where DS_RESTESTS.ITEM=2) F2, (select DS_RESTESTS.VAL where DS_RESTESTS.ITEM=3) F3, (PATIENTS.FULL_NAME) FIO_PAT, MOTCONSU.MOTCONSU_ID FROM MOTCONSU MOTCONSU WITH(NOLOCK) JOIN DS_RESTESTS DS_RESTESTS WITH(NOLOCK) ON MOTCONSU.MOTCONSU_ID = DS_RESTESTS.MOTCONSU_ID LEFT OUTER JOIN LAB_METHODS LAB_METHODS WITH(NOLOCK) ON LAB_METHODS.LAB_METHODS_ID = DS_RESTESTS.LAB_METHODS_ID JOIN LAB_METHODBIO LAB_METHODBIO WITH(NOLOCK) ON LAB_METHODS.LAB_METHODS_ID = LAB_METHODBIO.LAB_METHODS_ID LEFT OUTER JOIN DS_PARAMS DS_PARAMS_1 WITH(NOLOCK) ON DS_PARAMS_1.DS_PARAMS_ID = LAB_METHODBIO.DS_PARAMS_ID LEFT OUTER JOIN DS_PRMGRP DS_PRMGRP WITH(NOLOCK) ON DS_PRMGRP.DS_PRMGRP_ID = DS_PARAMS_1.DS_PRMGRP_ID LEFT OUTER JOIN DS_TESTS DS_TESTS WITH(NOLOCK) ON DS_TESTS.DS_TESTS_ID = DS_RESTESTS.DS_TESTS_ID JOIN PATIENTS PATIENTS WITH(NOLOCK) ON PATIENTS.PATIENTS_ID = MOTCONSU.PATIENTS_ID LEFT OUTER JOIN DIR_ANSW DIR_ANSW WITH(NOLOCK) ON MOTCONSU.MOTCONSU_ID = DIR_ANSW.MOTCONSU_RESP_ID LEFT OUTER JOIN PATDIREC PATDIREC WITH(NOLOCK) ON PATDIREC.PATDIREC_ID = DIR_ANSW.PATDIREC_ID LEFT OUTER JOIN MEDECINS MEDECINS WITH(NOLOCK) ON MEDECINS.MEDECINS_ID = PATDIREC.MEDECINS_CREATOR_ID WHERE (MOTCONSU.MODELS_ID= 864 and MOTCONSU.REC_STATUS<>'X') AND (isnull( PATIENTS.TESTOVYY,0)<>1) Для того что бы получить такой результат:
Сейчас у меня получается следующее:
Сообщение было отредактировано: 13 сен 19, 13:33 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 сен 19, 13:04 [21970273] Ответить | Цитировать Сообщить модератору |
Anastasia1495 Member Откуда: Сообщений: 4 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 сен 19, 13:13 [21970277] Ответить | Цитировать Сообщить модератору |
Minamoto Member Откуда: Москва Сообщений: 1162 |
[quot Anastasia1495]
Вы присоединяете все строки, а показываете по фильтру, отсюда лишние NULL-ы: JOIN DS_RESTESTS DS_RESTESTS WITH(NOLOCK) ON MOTCONSU.MOTCONSU_ID = DS_RESTESTS.MOTCONSU_ID Надо присоединять сразу с фильтром, задав разные алиасы: JOIN DS_RESTESTS F2 WITH(NOLOCK) ON MOTCONSU.MOTCONSU_ID = F2.MOTCONSU_ID anf F2.ITEM=2 JOIN DS_RESTESTS F2 WITH(NOLOCK) ON MOTCONSU.MOTCONSU_ID = F3.MOTCONSU_ID anf F3.ITEM=3 |
||
13 сен 19, 13:20 [21970284] Ответить | Цитировать Сообщить модератору |
Minamoto Member Откуда: Москва Сообщений: 1162 |
[quot Minamoto]
JOIN DS_RESTESTS F2 WITH(NOLOCK) ON MOTCONSU.MOTCONSU_ID = F2.MOTCONSU_ID anf F2.ITEM=2 JOIN DS_RESTESTS F3 WITH(NOLOCK) ON MOTCONSU.MOTCONSU_ID = F3.MOTCONSU_ID anf F3.ITEM=3 |
||
13 сен 19, 13:21 [21970286] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
А есть веские причины писать with nolock рядом с каждой таблицей вместо того, чтобы один раз написать set TIL RUC в начале батча? |
14 сен 19, 00:38 [21970796] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |