sql - STUFF 和 XML PATH 的问题 - 研究了很多但没有运气
问题描述
我在这里查找了许多关于 XML PATH 和 STUFF 的问题和答案,但我无法让它适用于我的查询。我知道这是用户错误,但我无法弄清楚。任何帮助表示赞赏。
这是我的示例查询:
SELECT DISTINCT
map.Name
,loc.MainAddress
,loc.MainCity
,loc.MainStateProvince_MisStateProvID
,loc.MainZipPostal
FROM meditech_livefdb.dbo.MisLoc_Main loc
LEFT OUTER JOIN meditech_livefdb.dbo.MisNomenclatureMap_Main map ON (loc.SourceID = map.SourceID AND loc.NomenclatureMap = map.MisNomenclatureMapID)
WHERE loc.MainAddress = '123 Main Street'
map.Name
列出在每个地址位置提供的服务。大多数地点都提供多种服务。我想要一个不同的地址位置列表,其中包含一个显示该位置提供的所有服务的组合字段。我已经尝试了以下方法,但它根本不起作用。
SELECT DISTINCT
loc.MainAddress
,loc.MainCity
,loc.MainStateProvince_MisStateProvID
,loc.MainZipPostal
,STUFF((SELECT ', ' + map.Name FOR XML PATH('')), 1, 1, '') AS Services
FROM meditech_livefdb.dbo.MisLoc_Main loc
LEFT OUTER JOIN meditech_livefdb.dbo.MisNomenclatureMap_Main map ON (loc.SourceID = map.SourceID AND loc.NomenclatureMap = map.MisNomenclatureMapID)
WHERE loc.MainAddress = '123 Main Street'
这只是给了我与第一个查询相同的信息。看看我做错了什么?谢谢。
解决方案
尝试在您的 stuff 子句中单独引用映射表(将 map.ID 替换为您调用的唯一 id 字段):
STUFF((SELECT ',' + map2.Name
FROM meditech_livefdb.dbo.MisNomenclatureMap_Main map2
WHERE map.ID = map2.ID FOR XML PATH('')
), 1, 1, '') AS Services
推荐阅读
- python - NameError:名称未定义;满足条件时定义的变量
- c# - 带有 Windows 服务的 OWIN Web API
- android - 改造 2 和 Spring Boot 授权不起作用
- intersystems-cache - 在缓存中运行后台方法
- firebase - 保存到大于 1MB 的 Firestore 对象
- python - 如何编辑 Python 脚本?
- python - 如何检查程序上使用的线程数
- docker - 重启后找不到 Docker 网络
- node.js - TypeError:admin.firestore.collection 不是函数
- android - 如何断言在前台运行的活动?