gpt4 book ai didi

sql - SQL 中的 String.Join

转载 作者:行者123 更新时间:2023-12-02 22:42:12 25 4
gpt4 key购买 nike

我想从名为 RMA(简化)的表中进行选择:

 idRMA| RMA_Number
-----------------------
1 RMA0006701
2 RMA0006730
3 RMA0006736
4 RMA0006739
5 RMA0006742

RMAtdefSymptomCode 之间有一个名为 trelRMA_SymptomCode 的联结表:

 fiSymptomCode| fiRMA
-----------------------
1 1
1 2
2 2
5 3
7 3
8 3
2 5
3 5
4 5
5 5

为了完整起见,这是tdefSymptomCode:

idSymptomCode    SymptomCodeNumber      SymptomCodeName
1 0000 Audio problem
2 0100 SIM problem
3 0200 Appearance problem
4 0300 Network problem
5 0500 On/Off problem

问:

每个 RMA 可以有 0-5 个症状代码。如何将 SymptomCodeNumber 与标量值函数中的分隔符(如“:”)连接在一起,以便我只得到一个 varchar 值作为结果。

类似这样的东西(其中getRmaSymptomCodes是一个SVF):

SELECT idRMA, RMA_Number, dbo.getRmaSymptomCodes(idRMA,':') AS Symptoms FROM RMA

这可能是 3 种不同 RMA 的症状(所有 RMA 都只有一种症状):

RMA_Number    SymptomCodeNumber
RMA0004823 0100
RMA0004823 0200
RMA0000083 0300
RMA0000084 0300
RMA0000084 0400

这应该连接为:

RMA0004823    0100:0200
RMA0000083 0300
RMA0000084 0300:0400

提前谢谢

更新:感谢所有我创建了这个工作功能的人

CREATE FUNCTION [dbo].[getRmaSymptomCodes]
(
@idRMA int,
@delimiter varchar(5)
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @Codes VARCHAR(8000)
SELECT @Codes = COALESCE(@Codes + @delimiter, '') + tdefSymptomCode.SymptomCodeNumber
FROM RMA INNER JOIN
trelRMA_SymptomCode ON RMA.IdRMA = trelRMA_SymptomCode.fiRMA INNER JOIN
tdefSymptomCode ON trelRMA_SymptomCode.fiSymptomCode = tdefSymptomCode.idSymptomCode
where idRMA=@idRMA
order by SymptomCodeNumber
return @Codes
END

最佳答案

这样可以吗?

DECLARE @Codes VARCHAR(8000) 
SELECT @Codes = COALESCE(@Codes + ', ': '') + tdefSymptomCode.SymptomCodeNumber
FROM RMA INNER JOIN
trelRMA_SymptomCode ON RMA.IdRMA = trelRMA_SymptomCode.fiRMA INNER JOIN
tdefSymptomCode ON trelRMA_SymptomCode.fiSymptomCode = tdefSymptomCode.idSymptomCode
where idRMA=2
order by SymptomCodeNumber
return @Codes

关于sql - SQL 中的 String.Join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com