【问题标题】:If else statement in insert query [closed]插入查询中的 if else 语句[关闭]
【发布时间】:2021-05-06 04:03:25
【问题描述】:

我在这段代码 sn-p 中遇到语法错误问题

INSERT INTO tblScheduledBillGenerate(SettingConnectionId, UserId, MonthlyBill, BillGenerateDate)
VALUES ( @Id, @UserId, 
                        (   if exists (SELECT *
                            FROM tblServiceBillPackage_Audit WHERE UserId=4 and ServiceBillPackageId=(24) 
                            and Status=1 nd AuditType=N'UPDATE' ORDER BY tblServiceBillPackage_Audit.TimeStamp DESC)

BEGIN 

SELECT 1
                            
END
ELSE 
BEGIN
SELECT 2
END ), @daytoday)
Msg 156, Level 15, State 1, Procedure USP_SCHEDULER_TestBillSchedule, Line 50
Incorrect syntax near the keyword 'if'.
Msg 102, Level 15, State 1, Procedure USP_SCHEDULER_TestBillSchedule, Line 76
Incorrect syntax near ')'.
Msg 102, Level 15, State 1, Procedure USP_SCHEDULER_TestBillSchedule, Line 103
Incorrect syntax near 'END'.

上面给出了代码有问题的部分。

【问题讨论】:

  • 请在您的问题中添加示例数据。目前尚不清楚(至少对我而言)您在这里想要完成什么。
  • 我想根据特定条件在那个空间中插入 1 else 2 我不知道为什么我会遇到语法错误
  • 完成...你能帮帮我吗

标签: sql sql-server tsql sails-mssqlserver


【解决方案1】:

您可能希望在您的声明中使用CASEIF 可用于过程、触发器和函数,但不能内联。

INSERT INTO tblScheduledBillGenerate(SettingConnectionId, UserId, MonthlyBill, BillGenerateDate)
SELECT @Id as SettingConnectionId,
       @UserId as UserId, 
       CASE WHEN (SELECT COUNT(Id)
                    FROM tblServiceBillPackage_Audit
                   WHERE UserId=4 and ServiceBillPackageId=(24) 
                     and Status=1 and AuditType=N'UPDATE') > 0
            THEN 1
            ELSE 2 END as MonthlyBill,
       @daytoday as BillGenerateDate;

这应该可以满足您的需求。

【讨论】:

    猜你喜欢
    • 2017-09-05
    • 2018-03-29
    • 2016-10-15
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多