我有這樣一個表如何填充列的值,並且這麼做的次數是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()是最好的選擇。我不知道複製,現在就學會了! –
爲什麼要在選擇查詢中計算它時存儲它? 您不必要地存儲冗餘數據。 –
其他存儲過程依賴於預期有此數據的視圖。爲什麼它是多餘的? –
沒有必要存儲數據,因爲您可以隨時計算它,同時在選擇查詢中檢索它 –