sql - SQL 将行连接到变量
问题描述
我需要构建一个函数,该函数返回一个包含表中值的字符串。因此,我声明了一个变量 NVARCHAR 并使用以下代码使用concat将每一行添加到字符串中。
DECLARE @Comment AS NVARCHAR(max) = ''
SELECT @Comment =
@Comment +
CONCAT (
replace(space(100), N' ', N'-')
,CHAR(13)
,convert(NVARCHAR(100), T.DT, 103)
,N' '
,convert(NVARCHAR(5), T.DT, 114)
,N' - '
,isnull(URESP.N_UTIL + N' ' + URESP.PRE_UTIL, 'System')
,N' : '
,isnull(TA.L_TACTION, T.ACT)
,CHAR(13)
,isnull(T.TXT , N' ')
,CHAR(13)
)
FROM (
SELECT D_CREATION DT
,'Commentaire' ACT
,I_C_UTIL_CREA C_UTIL
,L_COMMENT TXT
FROM ACTIONS
WHERE NO_APPEL = 106984 and C_TACTION = 'I_CR_INT'
) T
LEFT JOIN UTILISATEUR URESP ON URESP.C_UTIL = T.C_UTIL
LEFT JOIN TACTION TA ON TA.C_TACTION = ACT
ORDER BY DT desc
PRINT @Comment
输出:
----------------------------------------------------------------------------------------------------
19/07/2018 08:46 - ROCH Charly : Commentaire
test
我不明白为什么字符串只包含第一行。而查询下
SELECT T.* FROM (
SELECT D_CREATION DT
,'Commentaire' ACT
,I_C_UTIL_CREA C_UTIL
,L_COMMENT TXT
FROM ACTIONS
WHERE NO_APPEL = 106984 and C_TACTION = 'I_CR_INT'
) T
LEFT JOIN UTILISATEUR URESP ON URESP.C_UTIL = T.C_UTIL
LEFT JOIN TACTION TA ON TA.C_TACTION = ACT
ORDER BY DT desc
返回 2 行。
DT ACT C_UTIL TXT
2018-07-19 08:50:41.470 Commentaire 14254 test2
2018-07-19 08:46:51.240 Commentaire 14254 test
解决方案
您确定所有表格的内容都正确吗?当我测试类似的查询时,它工作正常。例子 :
create table COM (uid integer, comment varchar(50));
insert into COM values(1, 'Com 1');
insert into COM values(2, 'Com 2');
insert into COM values(2, 'Com 3');
create table UID (uid integer, name varchar(50));
insert into UID values(1, 'User 1');
insert into UID values(2, 'User 2');
insert into UID values(3, 'User 3');
declare @test as nvarchar(500) = ''
select @test = concat(@test, ' ', COM.uid, ' ', COM.comment, ' ', UID.name, ' | ')
from COM, UID
where COM.uid = UID.uid and UID.uid = 2
select RTRIM(SUBSTRING(RTRIM(@test), 1, LEN(@test)-1))
这给了我结果:
2 Com 2 User 2 | 2 Com 3 User 2
推荐阅读
- html - 如何在 textarea 中显示 HTML?
- javascript - 使用 localecompare 打字稿处理 null
- time-complexity - 存在 if-else(如果有循环而 else 没有循环)时的时间复杂度
- reactjs - 如何使用 React-Router 和 RouteComponentProps (TypeScript) 在 React 组件中设置状态?
- python - Chartify:如何传递 Selenium WebDriver?
- c# - 如何使用原始 SQL 查询在 .net 核心中检索具有相关实体的实体?
- weather - NOAA API Web 服务降雨数量的机会
- properties - 我希望文件看起来比实际更大
- azure - Azure DevOps 使用 Azure Key Vault 部署 JSON 变量替换
- python-3.x - Eclipse PyDev:__module_not_in_the_pythonpath__