2010-02-18 118 views
0

这里是我的表说明:SQL查询用SELECT和IF

表名称:订单

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

首先我的查询应该检查的价值代码,如果代码的值是'B',那么OUTPUT VALUE应该是代码+ Base,如果它不是'B',那么OUTPUT VALUE应该是代码+数量

再次获得的行将通过where子句过滤其中ID =''和数量=''

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

回答

3

修正的应答

事情困扰我,我原来的职位(见下文,但不使用),所以我回去检查。如果代码是'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 
+0

比ks很多..它的工作.. – msbyuva 2010-02-18 22:52:01

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