Я пытаюсь создать вычисляемые столбцы с помощью оператора CASE, используя an example from Microsoft.PowerBuilder SQL на SQL Server 2008 - оператор 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] [драйвер SQL-сервера ODBC] [SQL Server] Неправильный синтаксис рядом с «источником».
Я пробовал с запятой после 'End', а затем я получаю сообщение об ошибке с указанием:
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))) ' – Lamak
Это мой первый пост здесь. Мой компилятор позволяет одинарные кавычки, но вы были правы в отношении отсутствующего«) ». Я не вижу места для проголосовать за ответ, но спасибо. Через час, пытаясь сделать это, я потерял следы пунктуации. PEM. – PEM
ЭТО РЕШЕНО, НО НЕ УВЕРЕНЫ, КАК ПОЛУЧИТЬ ЭТО ТАКОЕ. PEM – PEM