带Select和IF的SQL查询

时间:2010-02-18 22:25:08

标签: sql select if-statement

这是我的表格描述:

表名:订单

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

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

将再次使用where子句过滤获得的行,其中ID =''和quantity =''

我如何形成这个复杂的查询,任何想法?...

3 个答案:

答案 0 :(得分:3)

修改后的答案

我的原始帖子让我感到困扰(见下文,但不要使用)所以我回去检查。如果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

答案 1 :(得分:0)

SELECT CASE Code WHEN 'B' THEN Code + Base ELSE Code + Quantity END As OutputValue
FROM Orders
WHERE ID = @id AND Quantity = @quantity

答案 2 :(得分:0)

SELECT
(
   CASE Code
      WHEN CODE = 'B' THEN Code+Base
      ELSE Code+Quantity
   END
) AS OutputValue
FROM Orders
WHERE ID  = '' AND Quantity=''