Sql server 使用if-else sql语句进行两次选择

Sql server 使用if-else sql语句进行两次选择,sql-server,tsql,Sql Server,Tsql,目前我有以下SQL查询 DECLARE @UgpEntry VARCHAR(50) SET @t1.UgpEntry = (SELECT @UgpEntry = t1.UgpEntry from OITM t1) IF (@UgpEntry = -1) SELECT t1.ItemCode as sapitemcode , t1.CodeBars as Barcode , t1.ItemName as description ,LEFT(t1.ItemName

目前我有以下SQL查询

DECLARE @UgpEntry VARCHAR(50)

SET @t1.UgpEntry = (SELECT @UgpEntry = t1.UgpEntry from OITM t1)

IF (@UgpEntry = -1)

SELECT
t1.ItemCode as sapitemcode
     , t1.CodeBars as Barcode
     , t1.ItemName as description
     ,LEFT(t1.ItemName,20) as short_description
     , 
           (select max(p.Price)
        from ITM1 p 
        where p.ItemCode = t1.ItemCode 
          and p.PriceList = 1) as [price_1]
     , CASE t1.VatGourpSa when 'V0' THEN 4 when 'V1' THEN 1 WHEN 'V2' THEN 2 WHEN 'V3' THEN 3 END as TaxCode,t1.U_GRUPOA, t1.U_GRUPOB, t1.U_GRUPOC, t1.UgpEntry

FROM OITM t1
WHERE t1.ItemCode='00004' and t1.UgpEntry = -1
 
ELSE

SELECT t1.ItemCode as sapitemcode
     , t1.CodeBars as Barcode
     , t1.ItemName as description
     ,LEFT(t1.ItemName,20) as short_description
     , (select max(p.Price)
        from ITM9 p 
        where p.ItemCode = t1.ItemCode 
          and p.UomEntry = 1) as [price_1],

           (select max(p.Price)
        from ITM1 p 
        where p.ItemCode = t1.ItemCode 
          and p.PriceList = 1) as [preciocaja]
     , CASE t1.VatGourpSa when 'V0' THEN 4 when 'V1' THEN 1 WHEN 'V2' THEN 2 WHEN 'V3' THEN 3 END as TaxCode,t1.U_GRUPOA, t1.U_GRUPOB, t1.U_GRUPOC, t1.UgpEntry

FROM OITM t1
WHERE t1.ItemCode='v6p' and t1.UgpEntry > -1
我想做的是:

  • 如果OITM表中的t1.UgpEntry列(已存在且有数据)等于-1,则 运行第一个查询

  • 否则运行第二个查询

  • 我做错了什么?我需要运行一个或另一个select,具体取决于IF语句

    示例:此记录有一个名为UgpEntry=-1的列

    此记录具有UgpEntry=5,并具有其他列


    如果(@UgpEntry=-1),我认为这个变量是错误的,因为它应该是OITM中的列,但不确定如何使用该列作为IF语句,因为IF语句的布局是正确的。只需确保设置@UgpEntry的查询返回单个结果

    DECLARE @UgpEntry VARCHAR(50)
    
    SELECT @UgpEntry = UgpEntry FROM OITM WHERE [enter your condition]
    
    IF (@UgpEntry = -1)
        [remaining logic from your original post]
    

    您能否打印
    @UgpEntry
    的值,以验证在达到IF语句时该值是否确实为-1?您可以这样设置
    @UgpEntry
    从表中选择@UgpEntry=UgpEntry
    我应该在第一行这样做吗?在UgpEntry声明从您的表中选择@UgpEntry=UgpEntry?我刚刚编辑了我的主要帖子。您的SELECT语句中没有WHERE子句,无法从OITM获取UgpEntry。因此,如果该表中有多行,则没有ide返回的UgpEntry的值。@JMabee So在选择#1和#2时,都添加了t.UgpEntry=etc。post editedperfect,这是我的问题。多谢各位