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

Откуда:
Сообщений: 228
Примерная структура xml-документа:
<ZL_LIST><SCHET>
			<CODE>
			<CODE_MO>
			<YEAR>
			<MONTH>
			<NSCHET>
			<DSCHET>
			<SUMMAV>
			<COMENTS>
		</schet>
		<ZAP>
			<N_ZAP>
			<PR_NOV>
			<PACIENT>
				<ID_PAC>
				<VPOLIS>
				<NPOLIS>
				<ST_OKATO>
				<SMO>
				<SMO_OGRN>
				<SMO_OK>
				<SMO_NAM>
				<NOVOR>
			<Z_SL>
				<IDCASE>
				<USL_OK>
				<VIDPOM>
				<FOR_POM>
				<LPU>
				<DATE_Z_1>
				<DATE_Z_2>

				<SL>
					<SL_ID>

					<NHISTORY>
					<DATE_1>
					<DATE_2>

					<USL>
						<IDSERV>
						<LPU>
						<DATE_IN>
						<DATE_OUT>
						<DS>
						<CODE_USL>
						<KOL_USL>
						<CODE_MD>
					</usl>
					<COMENTSL>
				</sl>
				<IDSP>
				<SUMV>
			</z_sl>
		</zap>


На один объект SL у нас много объектов USL.
Чтобы выбрать объекты USL, делаю запрос:
SELECT 
col.x.query('DATE_IN').value('DATE_IN[1]','DATE') as DATE_IN,
col.x.query('DATE_OUT').value('DATE_OUT[1]','DATE') as DATE_OUT,
col.x.query('DS').value('DS[1]','VARCHAR(10)') as DS,
col.x.query('CODE_USL').value('CODE_USL[1]','VARCHAR(20)') as CODE_USL,

FROM prob A
CROSS APPLY A.Data.nodes('/ZL_LIST/ZAP/Z_SL/SL/USL') col(x)


Вопрос: как выбрать в том же запросе также поля, относящиеся к объекту SL (то есть родительские узлы), например NHISTORY, DATE_1?
11 дек 18, 10:31    [21759914]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по выборке t-sql x-query  [new]
invm
Member

Откуда: Москва
Сообщений: 8440
SELECT 
col.x.value('DATE_IN[1]','DATE') as DATE_IN,
col.x.value('DATE_OUT[1]','DATE') as DATE_OUT,
...
col.x.value('../SL_ID[1]','int') as DATE_IN,
FROM prob A
CROSS APPLY A.Data.nodes('/ZL_LIST/ZAP/Z_SL/SL/USL') col(x)
11 дек 18, 10:41    [21759928]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по выборке t-sql x-query  [new]
seg856
Member

Откуда:
Сообщений: 228
invm, а как получить поле <NPOLIS>? Ведь PATIENT на одном уровне с Z_SL.
2 янв 19, 15:29    [21777593]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить