【发布时间】: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