我正在尝试创建一个查询,该查询能够与Microsoft SQL Server Management Studio合并ProfileItemID列中的值。
这是查询。首先,我不确定是否正确,因为在运行该错误后,我会收到此错误。
SELECT RoomID, ',' + ProfileItemID
FROM RoomProfile
WHERE RoomID = 1829
FOR XML PATH('')
“将varchar值','转换为数据类型int时转换失败。”
随附的图像包含我所拥有的表格信息和整个屏幕的图像。
希望有人能帮助我。我真的不知道该怎么办,因为我还是SQL的新手。
提前谢谢!
表格:
|----------------------------------------|
| RoomProfile |
|---------------------|------------------|
| RoomID | ProfileItemID |
|---------------------|------------------|
| 1829 | 28 |
|---------------------|------------------|
| 1829 | 103 |
|---------------------|------------------|
| 1829 | 104 |
|----------------------------------------|
输出:
|----------------------------------------|
| 1829 | 28, 103, 104 |
|----------------------------------------|
答案 0 :(得分:3)
您可以将 STUFF()
函数和 FOR XML
子句与PATH
模式一起使用
CREATE TABLE T
([RoomID] int, [ProfileItemID] int)
;
INSERT INTO T
([RoomID], [ProfileItemID])
VALUES
(1829, 28),
(1829, 103),
(1829, 104);
SELECT DISTINCT RoomID,
STUFF(
(SELECT ',' + CAST(ProfileItemID AS VARCHAR(10))
FROM T
FOR XML PATH('')
), 1, 1, ''
) Result
FROM T;
返回:
+--------+------------+
| RoomID | Result |
+--------+------------+
| 1829 | 28,103,104 |
+--------+------------+
答案 1 :(得分:0)
您可能只需要将id转换为字符串:
SELECT RoomID, ',' + CONVERT(VARCHAR(MAX), ProfileItemID)
FROM RoomProfile
WHERE RoomID = 1829
FOR XML PATH('')
答案 2 :(得分:0)
除了戈登的答案,您还可以使用CAST功能,如下所示:
SELECT RoomID, ',' + Cast(ProfileItemID as varchar(50))