我有这样一个表如何填充列的值,并且这么做的次数是QUANTITY
的值。基于其他两个列的值
所以RESULT = FP_ID
连接到自身QUANTITY
次。
如果QUANTITY
是3和FP_ID
是23,则结果应该是232323
我需要做的是插入该结果基于该逻辑的每一行的插入件。
如何在SQL中执行此操作?
我有这样一个表如何填充列的值,并且这么做的次数是QUANTITY
的值。基于其他两个列的值
所以RESULT = FP_ID
连接到自身QUANTITY
次。
如果QUANTITY
是3和FP_ID
是23,则结果应该是232323
我需要做的是插入该结果基于该逻辑的每一行的插入件。
如何在SQL中执行此操作?
它应该是计算列....
我的意思是,因为它是基于其他两列
,如果你想创建表
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
谢谢koushik,这是我需要的。 –
我已经编辑我的回答如下:
请执行以下查询来创建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 = @[email protected]_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))
嗨,这将工作,如果我只是想要的数量乘以FP_ID的价值,但我需要的是_FP_ID_连接到自己_quantity_次。我会编辑我的问题,使其更清晰。 –
谢谢Bala,这是否与replicate()相同? –
@JackReilly,我的答案与replicate()不同。但是replicate()是最好的选择。我不知道复制,现在就学会了! –
为什么要在选择查询中计算它时存储它? 您不必要地存储冗余数据。 –
其他存储过程依赖于预期有此数据的视图。为什么它是多余的? –
没有必要存储数据,因为您可以随时计算它,同时在选择查询中检索它 –