sql - SQL将多行查询为具有JOIN的单行
问题描述
我正在尝试将多行组合成一个包含JOIN
. 我不知道如何让这JOIN
件作品发挥作用。
我在 SQL Server 2014 上。
这件作品很好用,我根据以下内容将行滚动成一个逗号分隔的行ID_REVIEW
:
SELECT DISTINCT
ID_REVIEW
, STUFF((
SELECT N', ' + CAST(AREA_ID AS VARCHAR(255))
FROM AREA_ASSOC t2
WHERE t1.ID_REVIEW = t2.ID
FOR XML PATH('')
), 1, 1, '') AS AREA_ID
FROM REQUEST_WORKLOAD t1
结果:
ID_REVIEW | AREA_ID
-----------------
11438 | 2
23501 | 10, 15
44677 | 8
我想做的不是显示数字,而是AREA_ID
显示该区域的名称。目标是:
ID_REVIEW | AREA_NM
-----------------
11438 | State St.
23501 | Main St., Second St.
44677 | Adams Ave.
此AREA_NM
信息包含在另一个名为 的表中AREA
。在一个单独的查询中,我可以做一个LEFT JOIN
on tableAREA_ASSOC
来拉入AREA_NM
:
SELECT DISTINCT
[AREA_NM]
FROM AREA_ASSOC
LEFT JOIN AREA ON
AREA_ASSOC.AREA_ID = AREA.AREA_ID
我不知道如何将它JOIN
放入STUFF
函数中,以便获得区域名称。有没有办法做到这一点?
解决方案
在join
子查询中执行:
SELECT DISTINCT r2.ID_REVIEW,
STUFF( (SELECT N', ' + a2AREA_NM
FROM AREA_ASSOC aa2 JOIN
AREA a
ON aa2.AREA_ID = A.AREA_ID
WHERE aa2.ID_REVIEW = r2.ID
FOR XML PATH('')
), 1, 2, ''
) AS AREA_ID
FROM REQUEST_WORKLOAD rw
推荐阅读
- c# - 如何在 ASP.NET 和桌面应用程序之间交换数据?
- html - 如何在 IE 中选择选项时删除白色背景
- mysql - 外键格式错误:MySQL
- algorithm - 以最低成本划分为 n 个箱
- java - 如何在 Android 表单中进行过滤后的类似选择选项的下拉菜单?
- linux - ext4 中的项目配额
- python - 如何正确 numpy.nanmean 和 3D 数组上的轴关键字?
- haskell - 并行数字积分器功能比顺序版本慢。为什么?
- mysql - 如何在 Phpmyadmin 中使用 PopSQL
- git - Git:错误:无法读取 MacOSX.sdk 的 SDK 设置