2016-08-11 40 views
0

我正在尝试使用an example from Microsoft创建CASE语句的计算列。SQL Server 2008上的PowerBuilder SQL - CASE语句中包含计算列SELECT

我会感谢任何帮助或指针!

相关的示例代码:

SELECT 
    ProductNumber, Category = 
     CASE ProductLine 
     WHEN 'R' THEN 'Road' 
     WHEN 'M' THEN 'Mountain' 
     WHEN 'T' THEN 'Touring' 
     WHEN 'S' THEN 'Other sale items' 
     ELSE 'Not for sale' 
    END, 
    Name 
FROM 
    Production.Product 
ORDER BY 
    ProductNumber; 
GO 

而且我想'我做下面的同样的事情:

SELECT 
    Convert (char(10),"") No, 
    Convert (char(15),"") vendor, 
    car_type.car_type_desc, 
    origin_st = 
     case voucher.pu_is_airport 
      when 'F' then Convert(char(50), rtrim(ltrim(operator_archive.pu_st_no)) + " " + rtrim(ltrim(operator_archive.pu_st_name))) 
      else Convert(char(50), "") 
      end 
     origin = 
     case voucher.pu_is_airport 
      when 'F' then Convert(char(50), rtrim(ltrim(operator_archive.pu_city)) + ", " + rtrim(ltrim(operator_archive.pu_county))) 
      else Convert(char(50), rtrim(ltrim(operator_archive.pu_county)) 
      end 
     voucher.confirmation_no, 
     voucher.pu_is_airport, 
     operator_archive.dest_st_name 
FROM 
    voucher, 
    car_type, 
    operator_archive 
WHERE 
    (voucher.car_type = car_type.car_type_id) and 
    (operator_archive.confirmation_no = voucher.confirmation_no) and 
    ((dbo.voucher.pu_date_time >= :start_date) AND 
    (dbo.voucher.pu_date_time <= :end_date) AND 
    (dbo.voucher.account_no = :account) AND 
    (dbo.voucher.status_flag not in ('9','X','C','F')) AND 
    (dbo.voucher.payment_type in ('1','2','3','4','5','6','7','8')))  

但服务器告诉我,我有一个错误:

SQLSTATE = 37000
[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]不正确的语法靠近'起源'。

我已经 '终结' 后的逗号试了一下,然后我得到一个错误,指出:

SQLSTATE = 37000
[微软] [ODBC SQL Server驱动程序] [SQL服务器]不正确'end'附近的语法。

+2

哦,伙计,这里有很多问题。首先,要使用字符串,你需要使用单引号'Convert(char(50),'')'而不是双引号'Convert(char(50),“”)'(你必须在任何地方改变它。 ,'END'后绝对需要逗号,问题是,例如,你在这里丢失了一个圆括号:'Convert(char(50),rtrim(ltrim(operator_archive.pu_county))',它应该是'Convert (char(50),rtrim(ltrim(operator_archive.pu_county)))' – Lamak

+0

这是我的第一篇文章,我的编译器允许使用单引号,但你对错过的')'是正确的。投票回应,但是谢谢,经过一个小时的尝试,我忘记了标点符号PEM – PEM

+0

这是已解决,但不确定如何标记它PEM – PEM

回答

1

感谢来自Lamak的意见,我能够通过在'结束'语句后添加缺少的括号和逗号来解决问题。谢谢Lamak!