我目前在sql server中有一个视图,如下所示:
表1:
Id
Desc
Mex
表2:
Id
IdTab1
Desc
视图select everything from table1 left joined on table2 on id-idtab1
现在我有一个表3和表2,它们有如下字段:
表3:
Id
IdTab2
Code (VarChar(3))
我希望在视图的select中有一个新的字段代码,它包含表3中用字符“”连接的每一个代码,而不更改旧查询中显示的记录(就像按concat进行分组一样)与联接匹配的每一个代码。
我看到一些其他的帖子,但他们都没有使用这种方法。例如,使用:
declare @result varchar(500)
set @result = ''
select @result = @result + ModuleValue + ', '
from TableX where ModuleId = @ModuleId
但我面临两个问题。我不能在视图中使用declare(可能是因为语法错误),而且我必须按分组,我不知道如何使用。
示例结果基本视图
ID | IDTAB2 | DESC1 | DESC2 | MEX
1 | 2 | aa | bb | 4
2 | 1 | ab | cc | 2
2 | 2 | bb | bc | 2
示例结果表3
ID | IDTAB2 | DESC1 | DESC2 | MEX | CODE
1 | 2 | aa | bb | 4 | CS
1 | 2 | aa | bb | 4 | NN
2 | 1 | ab | cc | 2 | AF
2 | 2 | bb | bc | 2 | DC
2 | 2 | bb | bc | 2 | KK
2 | 2 | bb | bc | 2 | JD
需要示例结果
ID | IDTAB2 | DESC1 | DESC2 | MEX | CODENEW
1 | 2 | aa | bb | 4 | CS NN
2 | 1 | ab | cc | 2 | AF
2 | 2 | bb | bc | 2 | DC KK JD
1条答案
按热度按时间8tntrjer1#
考虑到“example result joined table3”的输出,您可以根据您的sql server版本尝试下面的选项-
mssql-2016及更早版本-演示
对于mssql-2017或更新版本-演示