2016-01-22 149 views
0

我有這樣一個表如何填充列的值,並且這麼做的次數是QUANTITY的值。基於其他兩個列的值

所以RESULT = FP_ID連接到自身QUANTITY次。

如果QUANTITY是3和FP_ID是23,則結果應該是232323

我需要做的是插入該結果基於該邏輯的每一行的插入件。

如何在SQL中執行此操作?

+0

爲什麼要在選擇查詢中計算它時存儲它? 您不必要地存儲冗餘數據。 –

+0

其他存儲過程依賴於預期有此數據的視圖。爲什麼它是多餘的? –

+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

+0

謝謝koushik,這是我需要的。 –

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 = @[email protected]_ID 
      SET @QUANTITY = @QUANTITY - 1 
     END 

    RETURN @ConcatenatedString 
END 
GO 

而且你可以調用FunctionINSERT 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)) 
+0

嗨,這將工作,如果我只是想要的數量乘以FP_ID的價值,但我需要的是_FP_ID_連接到自己_quantity_次。我會編輯我的問題,使其更清晰。 –

+0

謝謝Bala,這是否與replicate()相同? –

+0

@JackReilly,我的答案與replicate()不同。但是replicate()是最好的選擇。我不知道複製,現在就學會了! –