如何解决尝试将这些查询合并为一个,因为我想在不使用临时表的情况下编写查询不断收到语法错误
SELECT
CAST([patientDATA] AS XML).value('PatientcardCard[1]/Replacements[1]/patientId[1]','nvarchar(80)') [patientId],* into #tmp
FROM hospital [c1] with(NOLOCK)
where
patientserial in (
select ptserial From patients with(Nolock)
where patientsid=6889
and patientprogramid in (
26917,21296,27025
)
)
select patientId,patientbarcode,patientprogramID
into #tmp1
From #tmp
join patients with(nolock) on patientserial=ptserial
where patientid in
('0401478300007847','0401478300008566','0401478300008761','0401478300008727','0401478300007648','0401478300008020'
)
所以第一个查询是使用强制转换从列内的标签中获取值,标签是患者 ID,并将数据存储到临时表中。
第二个查询是从临时表中提取数据。我想在不使用临时表的情况下编写嵌套查询。但我一直有语法错误,这是我目前的查询:
select patientId,patientprogramID
From (
SELECT
CAST([patientDATA] AS XML).value('PatientcardCard[1]/Replacements[1]/patientId[1]',27025
)
)
)
join patients with(nolock) on patientserial=ptserial
where patientid in
('0401478300007847','0401478300008020'
)
invalid column in first line,around patientId,patientbarcode
and in join part,invalid column as ptserial
是不是因为值被强制转换了?
解决方法
您的方法存在一些问题。
-
SELECT *
不是一个好主意。它也似乎是不必要的 用于您的最终查询。 - 你应该每列参考哪个表 来自。
- 你可能想多了。
SELECT CAST([patientDATA] AS XML).value('PatientcardCard[1]/Replacements[1]/patientId[1]','nvarchar(80)') [patientId],patientbarcode,patiendprogramID
FROM hospital h
INNER JOIN patients p ON p.ptserial = h.patientserial
WHERE patientsid = 6889
AND patientprogramid IN (26917,21296,27025)
AND patientid IN (
'0401478300007847','0401478300008566','0401478300008761','0401478300008727','0401478300007648','0401478300008020'
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。