2016-08-11 5 views
0

Я пытаюсь создать вычисляемые столбцы с помощью оператора 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'.

+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

Благодаря комментариям Ламака, я смог решить проблему, добавив отсутствующую скобку и запятую после утверждения «end». Спасибо, Ламак!

 Смежные вопросы

  • Нет связанных вопросов^_^