如何根据其他两个列的值填充列的值

时间:2016-01-22 05:06:40

标签: sql sql-server tsql

我有一张这样的表:

|  DEL_ID   |   CP_ID   | ID  | QUANTITY   | FP_ID  |  RESULT  | 

我需要使用resultQuantity列填充FP_ID列,方法是将FP_ID值连接到自身,并按值多次执行此操作QUANTITY

所以RESULT = FP_ID连接到自己QUANTITY次。

如果QUANTITY为3且FP_ID为23,则结果应为232323

我需要做一个插件,根据这个逻辑为每一行插入这个结果。

我如何在SQL中执行此操作?

2 个答案:

答案 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))
相关问题