我有一张这样的表:
| DEL_ID | CP_ID | ID | QUANTITY | FP_ID | RESULT |
我需要使用result
和Quantity
列填充FP_ID
列,方法是将FP_ID
值连接到自身,并按值多次执行此操作QUANTITY
。
所以RESULT = FP_ID
连接到自己QUANTITY
次。
如果QUANTITY
为3且FP_ID
为23,则结果应为232323
我需要做一个插件,根据这个逻辑为每一行插入这个结果。
我如何在SQL中执行此操作?
答案 0 :(得分:4)
它应该是计算列....
我的意思是我应该声明它是基于其他两列
如果要在创建表格后添加
ALTER TABLE tblResults
ADD Final_Result as replicate(FP_ID ,Quantity)
其他
创作时
Create table tblResults
(.......ur columns..... , Final_Result as replicate(FP_ID ,Quantity))
您无需为此列提供数据,当数据加载到表中时它会自动加载" tblResults"
注意:如果任何值为null,则Final_Result值也将为NULL
答案 1 :(得分:0)
我编辑了我的答案如下:
请执行以下查询以创建Function
:
CREATE FUNCTION [dbo].[ConcatenateString]
(
@FP_ID INT,
@QUANTITY INT
)
RETURNS
NVARCHAR(MAX)
AS
BEGIN
DECLARE @ConcatenatedString NVARCHAR(MAX), @ConvertedFP_ID NVARCHAR(100)
SET @ConcatenatedString =''
SET @ConvertedFP_ID = CONVERT(varchar(100),@FP_ID)
WHILE @QUANTITY >= 1
BEGIN
SELECT @ConcatenatedString = @ConcatenatedString+@ConvertedFP_ID
SET @QUANTITY = @QUANTITY - 1
END
RETURN @ConcatenatedString
END
GO
您可以拨打Function
中的INSERT script
:
INSERT INTO tblResults(DEL_ID,CP_ID,ID,QUANTITY,FP_ID,RESULT)
VALUES(1,2,3,4,5,(SELECT dbo.ConcatenateString(4,5) AS ConcatnatedValue))