将值插入字段,除非该字段的值为“X”,然后插入另一个值

时间:2014-06-20 13:30:17

标签: sql

所以有一个我试图编写的存储过程(见下文)我想要做的是插入到语句中的第3个字段(OrgSQENNo)我希望它插入OrgSQENNo的值,除非该值为0然后我希望它插入SQEN值。我想我需要使用exists或null原因,但不确定最好的方法来解决这个问题。

(
@SEQN INT ,
@UPDATED_BY VARCHAR(15)
)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    DECLARE @NEW_SEQN INT
    EXEC sp_asi_GetCounter2 'GT_INVESTMENT', @NEW_SEQN OUTPUT

    INSERT INTO [GT_INVESTMENT] 
    ([ID],[SEQN],[OrgSQENNo], OrgPaymentDate, InvestAmnt, InvestmentDate)


    SELECT [ID], @NEW_SEQN, [OrgSQENNo], OrgPaymentDate, (InvestAmnt+TotalInterest), MatDate
    FROM [GT_INVESTMENT]
    WHERE SEQN = @SEQN

END

提前感谢大家的帮助

2 个答案:

答案 0 :(得分:0)

您可以使用两个语句:

INSERT INTO [GT_INVESTMENT] ([ID],[SEQN],[OrgSQENNo], OrgPaymentDate, InvestAmnt, InvestmentDate)
SELECT [ID], @NEW_SEQN, [OrgSQENNo], OrgPaymentDate, (InvestAmnt+TotalInterest), MatDate
FROM [GT_INVESTMENT]
WHERE SEQN = @SEQN AND [OrgSQENNo] != 0;

INSERT INTO [GT_INVESTMENT] ([ID],[SEQN],[OrgSQENNo], OrgPaymentDate, InvestAmnt, InvestmentDate)
SELECT [ID], @NEW_SEQN, SEQN, OrgPaymentDate, (InvestAmnt+TotalInterest), MatDate
FROM [GT_INVESTMENT]
WHERE SEQN = @SEQN AND [OrgSQENNo] = 0

答案 1 :(得分:0)

您可以对insert语句使用以下查询

    INSERT INTO [GT_INVESTMENT] 
    ([ID],[SEQN],[OrgSQENNo], OrgPaymentDate, InvestAmnt, InvestmentDate)


    SELECT [ID],@NEW_SEQN , CASE [OrgSQENNo] WHEN 0 THEN @SEQN ELSE [OrgSQENNo] END , OrgPaymentDate, (InvestAmnt+TotalInterest), MatDate
    FROM [GT_INVESTMENT]
    WHERE SEQN = @SEQN