【问题标题】:PowerBuilder SQL on SQL Server 2008 - CASE statement with computed column in SELECTSQL Server 2008 上的 PowerBuilder SQL - SELECT 中具有计算列的 CASE 语句
【发布时间】:2016-12-18 11:15:22
【问题描述】:

我正在尝试使用 an example from Microsoft 使用 CASE 语句创建计算列。

我将不胜感激任何帮助或指点!!

相关示例代码为:

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 Driver][SQL Server]'origin' 附近的语法不正确。

我在“结束”后用逗号尝试过,然后我收到一条错误消息:

SQLSTATE = 37000
[Microsoft][ODBC SQL Server Driver][SQL Server]'end' 附近的语法不正确。

【问题讨论】:

  • 哦,伙计,这里有很多问题。首先,要使用字符串,您需要使用单引号 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)))
  • 这是我在这里的第一篇文章。我的编译器允许单引号,但你对丢失的')'是正确的。我没有看到投票支持回复的地方,但谢谢。经过一个小时的尝试,我忘记了标点符号。 PEM。
  • 这已解决,但不知道如何标记它。 PEM
  • 您可以发布一个回答,说明问题所在、您如何解决问题,然后您可以接受该回答

标签: sql sql-server-2008 case calculated-columns


【解决方案1】:

感谢 Lamak 的 cmets,我能够通过在“结束”语句后添加缺少的括号和逗号来解决该问题。谢谢拉马克!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 2013-04-07
    • 2013-12-06
    • 1970-01-01
    • 2012-05-18
    • 2022-06-22
    • 1970-01-01
    相关资源
    最近更新 更多