Sql server 基于日期的SQL Server if条件

Sql server 基于日期的SQL Server if条件,sql-server,if-statement,Sql Server,If Statement,我需要帮助,给出if-exists和if-not-exists条件 我想基于日期编写一个if条件,这样,如果表1中某个特定作业的当前日期目标_DT上存在任何行,则执行一些操作 否则做其他动作 IF EXISTS(SELECT 1 FROM COD_BLU_OPENING_VOLUME WHERE TARGET_DT = CONVERT(DATETIME, GETDATE(), 101) AND JOBID = @OPENJOB) BEGIN IF(

我需要帮助,给出if-exists和if-not-exists条件

我想基于日期编写一个if条件,这样,如果表1中某个特定作业的当前日期目标_DT上存在任何行,则执行一些操作 否则做其他动作

IF EXISTS(SELECT 1 FROM COD_BLU_OPENING_VOLUME 
          WHERE TARGET_DT = CONVERT(DATETIME, GETDATE(), 101) AND JOBID = @OPENJOB)         
BEGIN
    IF(SELECT COUNT(1) FROM COD_BLU_INVENTORY WITH(NOLOCK) 
       WHERE (JOBID = @JOB AND STATUS = 'A' AND TARGETDT = CONVERT(DATETIME, @TARGETDT, 101))) = 0
    BEGIN
        INSERT INTO COD_BLU_INVENTORY(JOBID, TARGETDT, CARRYOVER, FRESHVOL, TOTALVOL, STATUS, UPDATEDBY, UPDATEDT, OPENINGVOL) 
        VALUES(@JOB, @TARGETDT, @CARRYOVERVOL, @FRESHVOL, @TOTALVOL, 'A', @EMPCODE, GETDATE(), @CARRYOVERVOL)

        SELECT '1'
    END
    ELSE
    BEGIN 
        SELECT'0'
    END
END             
ELSE IF NOT EXISTS(SELECT 1 FROM COD_BLU_OPENING_VOLUME 
                   WHERE TARGET_DT = CONVERT(DATETIME, GETDATE(), 101) 
                     AND TARGET_DT < CONVERT(DATETIME, GETDATE(), 101) 
                     AND JOBID = @OPENJOB)
BEGIN
    INSERT INTO COD_BLU_OPENING_VOLUME(TARGET_DT, JOBID, OPENING_COUNT, UPDATED_BY, UPDATED_DT, PRE_ASSIGNEDCOUNT) 
    VALUES(@OPENTARDT, @OPENJOB, @OPENCNT, @OPENEMPCODE, GETDATE(), @PREOPENCNT)

    IF (SELECT COUNT(1) FROM COD_BLU_INVENTORY WITH(NOLOCK) 
        WHERE (JOBID = @JOB AND STATUS = 'A' 
               AND TARGETDT = CONVERT(DATETIME, @TARGETDT, 101))) = 0
    BEGIN
        INSERT INTO COD_BLU_INVENTORY(JOBID, TARGETDT, CARRYOVER, FRESHVOL, TOTALVOL, STATUS, UPDATEDBY, UPDATEDT, OPENINGVOL) 
        VALUES(@JOB, @TARGETDT, @CARRYOVERVOL, @FRESHVOL, @TOTALVOL, 'A', @EMPCODE, GETDATE(), @CARRYOVERVOL)

        SELECT '1'
    END
    ELSE
    BEGIN 
        SELECT '0'
    END
END

但问题是,如果目标_DT被指定为未来日期,它将执行else条件,我希望它执行if条件,上面的代码就是我所厌倦的。如有任何帮助,我们将不胜感激。请帮忙

您希望在目标日期大于当前日期未来日期时执行IF部分。Ya jibin,另外,我想检查当前日期中是否存在任何行,并执行IF条件我已发布了答案,请检查它,如果有任何问题,请告诉我,itsems它不返回任何行当目标日期大于CURRENTDATE时,您想将数据插入COD_BLU__库存@rohini您可以共享测试数据和预期结果吗??
  IF EXISTS(SELECT 1 FROM COD_BLU_OPENING_VOLUME WHERE ((TARGET_DT=CONVERT(DATETIME,GETDATE(),101) OR TARGET_DT>CONVERT(DATETIME,GETDATE(),101)) AND JOBID=@OPENJOB))          
        BEGIN
            IF(SELECT COUNT(1) FROM COD_BLU_INVENTORY WITH(NOLOCK) WHERE (JOBID=@JOB AND STATUS='A' AND (TARGET_DT=CONVERT(DATETIME,GETDATE(),101) OR TARGET_DT>CONVERT(DATETIME,GETDATE(),101))))=0
                BEGIN
                    INSERT INTO COD_BLU_INVENTORY(JOBID,TARGETDT,CARRYOVER,FRESHVOL,TOTALVOL,STATUS,UPDATEDBY,UPDATEDT,OPENINGVOL) 
                    VALUES(@JOB,@TARGETDT,@CARRYOVERVOL,@FRESHVOL,@TOTALVOL,'A',@EMPCODE,GETDATE(),@CARRYOVERVOL)
                    SELECT '1'
                END
            ELSE
                BEGIN 
                    SELECT'0'
                END
            END             
     ELSE IF NOT EXISTS(SELECT 1 FROM COD_BLU_OPENING_VOLUME WHERE ((TARGET_DT=CONVERT(DATETIME,GETDATE(),101) OR TARGET_DT<CONVERT(DATETIME,GETDATE(),101)) AND JOBID=@OPENJOB))
        BEGIN
            INSERT INTO COD_BLU_OPENING_VOLUME(TARGET_DT,JOBID,OPENING_COUNT,UPDATED_BY,UPDATED_DT,PRE_ASSIGNEDCOUNT) 
            VALUES(@OPENTARDT,@OPENJOB,@OPENCNT,@OPENEMPCODE,GETDATE(),@PREOPENCNT)

            IF (SELECT COUNT(1) FROM COD_BLU_INVENTORY WITH(NOLOCK) WHERE (JOBID=@JOB AND STATUS='A' AND TARGETDT = CONVERT(DATETIME,@TARGETDT,101)))=0
                BEGIN
                    INSERT INTO COD_BLU_INVENTORY(JOBID,TARGETDT,CARRYOVER,FRESHVOL,TOTALVOL,STATUS,UPDATEDBY,UPDATEDT,OPENINGVOL) 
                    VALUES(@JOB,@TARGETDT,@CARRYOVERVOL,@FRESHVOL,@TOTALVOL,'A',@EMPCODE,GETDATE(),@CARRYOVERVOL)
                    SELECT '1'
                END
            ELSE
                BEGIN 
                    SELECT'0'
                END
        END
    END