【发布时间】:2020-02-05 11:49:52
【问题描述】:
我有这张表 TableA,它有以下字段:[intIdEntidad]、[intIdEjercicio]、[idTipoGrupoCons]。 tableA 看起来像 idTipoGrupoCons = 16 这个图像 enter image description here
我正在尝试使用 STUFF 函数来显示以逗号分隔的 intIdEjercicio 列,类似这样; enter image description here
这是我用来获取上图结果的查询:
SELECT DISTINCT o.idTipoGrupoCons, o.intIdEntidad, ejercicios= STUFF((
SELECT ', ' + CONVERT(VARCHAR,a.intIdEjercicio)
FROM dbo.[tbEntidades_Privadas_InfoAdicionalGrupo] AS a
WHERE a.idTipoGrupoCons = 16
FOR XML PATH, TYPE).value(N'.[1]', N'varchar(max)'), 1, 2, '')
FROM [tbEntidades_Privadas_InfoAdicionalGrupo] AS o
JOIN tbEntidades_Privadas p On O.intIdEntidad = p.intIdEntidad
WHERE o.idTipoGrupoCons = 16
结果不正确,因为我为 idTipoGrupoCons = 16 执行此查询
SELECT [idTipoGrupoCons], [intIdEntidad],[intIdEjercicio]
FROM [tbEntidades_Privadas_InfoAdicionalGrupo] A
WHERE A.idTipoGrupoCons = 16
结果是这样的 enter image description here
这意味着对于 intIdEntidad = 50 intIdEjercicio 仅为 7 而对于 intIdEntidad = 45 intIdEjercicio = 2 和 4
我想问题是我需要在 STUFF 或外部 WHERE 中添加子查询或函数,以便每次调用 STUFF 函数时向 intIdEntidad 添加条件。
我已经阅读了 CROSS APPLY 的使用方法,也许它可以用来解决问题
【问题讨论】:
标签: subquery cross-apply