【问题标题】:Sql Query With Select and IF带有 Select 和 IF 的 Sql 查询
【发布时间】:2010-02-18 22:25:07
【问题描述】:

这是我的表格描述:

表名称:订单

列:ID、NO、数量、基数、代码

首先我的查询应该检查 Code 的值,如果 Code 的值是 'B' 那么 OUTPUT VALUE 应该是 Code+Base 如果不是 'B' 那么 OUTPUT VALUE 应该是 Code+Quantity

使用where子句 where ID='' and quantity='' 再次过滤获得的行

我怎样才能形成这个复杂的查询,有什么想法吗?...

【问题讨论】:

    标签: sql select if-statement


    【解决方案1】:

    修改后的答案

    我原来的帖子有些困扰(见下文,但不要使用),所以我回去检查。如果 Code 是“B”(因此是一个 varchar)并且 Quantity 是一个整数,那么 SQL 不会因为显而易见的原因而让您添加它们,并且不会为您进行隐式转换(至少它没有为我做)。所以我必须将 Quantity 转换为 varchar 才能使用它。

    查看以下基于 SQL Server 2008 构建的工作代码

    DECLARE @MyTable TABLE
    (
        ID int identity (1, 1),
        Num int,
        Quantity int,
        Base varchar (1),
        Code varchar (1)
    )
    
    INSERT INTO @MyTable VALUES 
      (1, 1, 'a', 'A')
    , (2, 2, 'b', 'B')
    , (3, 3, 'c', 'C')
    , (4, 4, 'd', 'D')
    , (5, 5, 'e', 'E')
    
    SELECT * FROM @MyTable
    
    SELECT 
        CASE WHEN Code = 'B' THEN Code+Base 
        ELSE Code+CONVERT (VarChar, Quantity) 
        END AS OutputValue
    FROM @MyTable
    

    原始答案(请勿使用)

    试试下面的

    SELECT CASE WHEN Code = 'B' THEN Code+Base ELSE Code+Quantity END AS OutputValue
    FROM MyTable
    WHERE ID = @Id
    and Quantity = @Quantity
    

    【讨论】:

      【解决方案2】:
      SELECT CASE Code WHEN 'B' THEN Code + Base ELSE Code + Quantity END As OutputValue
      FROM Orders
      WHERE ID = @id AND Quantity = @quantity
      

      【讨论】:

        【解决方案3】:
        SELECT
        (
           CASE Code
              WHEN CODE = 'B' THEN Code+Base
              ELSE Code+Quantity
           END
        ) AS OutputValue
        FROM Orders
        WHERE ID  = '' AND Quantity=''
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-01
          • 1970-01-01
          • 2010-10-19
          • 2012-05-03
          • 2018-10-15
          • 2012-04-05
          • 2014-10-18
          • 1970-01-01
          相关资源
          最近更新 更多