SELECT t1.id, STUFF( ( SELECT ',' + CONVERT ( VARCHAR, CASE WHEN ISNUMERIC( REPLACE( t2.hsdj, ',', '' ) ) = 1 THEN CAST ( REPLACE( t2.hsdj, ',', '' ) AS FLOAT ) END ) FROM formtable_main_43_dt1 t2 WHERE t1.id = t2.mainid FOR XML PATH ( '' ) ), 1, 1, '' ) AS MergedValues FROM formtable_main_43 t1 INNER JOIN formtable_main_43_dt1 t2 ON t1.id = t2.mainid GROUP BY t1.id;怎么再合并查询t1中其他 text、ntext 和 image 数据类型的列
时间: 2023-12-22 08:04:34 浏览: 62
如果查询中还需要合并 t1 表中的其他文本、ntext 和 image 数据类型的列,可以使用类似于上面的方法,将这些列转换为字符串并使用 STUFF 和 FOR XML PATH 函数将它们合并到一起。例如,假设要合并 t1 表中的一个名为 'remarks' 的 text 列,可以像这样修改查询:
```
SELECT t1.id,
STUFF(
(
SELECT
',' + CONVERT (
VARCHAR,
CASE
WHEN ISNUMERIC( REPLACE( t2.hsdj, ',', '' ) ) = 1 THEN CAST ( REPLACE( t2.hsdj, ',', '' ) AS FLOAT )
ELSE NULL -- 如果 t2.hsdj 不是数字,则返回 NULL
END
)
FROM formtable_main_43_dt1 t2
WHERE t1.id = t2.mainid
FOR XML PATH ( '' )
), 1, 1, ''
) AS MergedValues,
COALESCE( t1.remarks, '' ) AS Remarks
FROM formtable_main_43 t1 INNER JOIN formtable_main_43_dt1 t2 ON t1.id = t2.mainid
GROUP BY t1.id;
```
这个查询使用 COALESCE 函数将 t1.remarks 列转换为字符串,并将它作为一个新的列 'Remarks' 添加到查询结果中。请注意,如果 t1.remarks 列包含 NULL 值,则 COALESCE 函数将返回一个空字符串。
阅读全文