2013-11-20 5 views
1

У меня есть некоторая ошибка в моем SQL и не могу понять, что вызывает проблему. Я использую Navicat для подключения к SQL Server 2000 (в Windows Server 2003). Я бегу следующее:SQL Server запрос SAP Business One

SELECT DISTINCT 
OCRD.CardCode, 
OCRD.CardName, 
OCRD.Address, 
OCRD.ZipCode, 
OCRD.City, 
OCRD.Country, 
CASE OCRD.GroupCode = 
WHEN 100 THEN 'Kunde' 
WHEN 101 THEN 'Lieferant' 
END 
FROM 
OCRD 
INNER JOIN OINV T1 on T1.CardCode = OCRD.CardCode 
WHERE 
(OCRD.GroupCode != 101) AND 
(OCRD.GroupNum = 8 OR 
OCRD.GroupNum = 7 OR 
OCRD.GroupNum = 9 OR 
OCRD.GroupNum = 6 OR 
OCRD.GroupNum = 5 OR 
OCRD.GroupNum = 4) AND 
T1.DocDate > '2012-01-01 00:00:00.000' AND 
OCRD.Address IS NOT NULL AND 
(validFor = 'N' OR (validFor = 'Y' AND validTo IS NULL)) 

Следующая ошибка появляется

[Err] 42000 - [SQL Server] Плохой синтаксис около '='

Я не могу понять, почему

+0

Нет SQL Server ** 2003 ** - у нас есть 2000, 2005, 2008, 2008 R2, 2012 и 2014 на горизонте - так что это действительно? = –

+0

Это 2000 работает на сервере 2003. Извините – Dreshar

ответ

2

Используйте этот

SELECT DISTINCT 
    OCRD.CardCode, 
    OCRD.CardName, 
    OCRD.Address, 
    OCRD.ZipCode, 
    OCRD.City, 
    OCRD.Country, 
    CASE OCRD.GroupCode   -- you must not use a = here ! 
     WHEN 100 THEN 'Kunde' 
     WHEN 101 THEN 'Lieferant' 
    END 
FROM 
    OCRD 
INNER JOIN 
    OINV T1 on T1.CardCode = OCRD.CardCode 
WHERE 
    (OCRD.GroupCode != 101) AND 
    (OCRD.GroupNum = 8 OR 
    OCRD.GroupNum = 7 OR 
    OCRD.GroupNum = 9 OR 
    OCRD.GroupNum = 6 OR 
    OCRD.GroupNum = 5 OR 
    OCRD.GroupNum = 4) AND 
    T1.DocDate > '2012-01-01 00:00:00.000' AND 
    OCRD.Address IS NOT NULL AND 
    (validFor = 'N' OR (validFor = 'Y' AND validTo IS NULL)) 

Нет = в конце CASE строка кода

+0

Спасибо - должен был знать этот lol :) – Dreshar

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