2010-11-02 5 views
5
SELECT SKU 
FROM PartProductSupplemental 
EXCEPT 
SELECT SKU 
FROM Inventory 

Perché ricevo questo errore:Perché EXCEPT non funziona? Sintassi non corretta in prossimità della parola Tranne

Incorrect Syntax near the Word Except

verifico linea e la sintassi è sintatticamente corretto:

SELECT ProductID 
FROM Production.WorkOrder 
EXCEPT 
SELECT ProductID 
FROM Production.Product 
+0

Prova a metterlo su una riga - potrebbe essere solo uno spazio vuoto mancante. – Goblin

+0

So che questo è contrassegnato correttamente, ma in futuro utilizzando SQL 08 come titolo potrebbe far pensare che stai parlando di uno standard ANSI quando leggi il titolo rispetto a un prodotto Microsoft. Il titolo più ragionevole cambierebbe SQL 08 sarebbe Microsoft SQL Server 2008. Pungente lo so :). – Kuberchaun

risposta

8

La modalità di compatibilità del database è probabilmente impostata su 2000 (80) o precedente.

In Management Studio:

  1. Fare clic destro sul nome del database sotto i "database" Voce del Esplora oggetti
  2. Nella finestra Proprietà che si apre, selezionare "Opzioni" - del livello di compatibilità è terzo dall'alto, a destra.
+2

Dovrebbe funzionare nel 2005. http://msdn.microsoft.com/en-us/library/ms188055%28v=SQL.90%29.aspx –

+0

livello di compatibilità è SQL Server 2008 (80) – bizness

+0

@bizness: 80 è * 2000 *; 100 significa ** 2008 ** –

0

provare a utilizzare distinte e MENO solo per testare .

Tranne che avrebbe dovuto funzionare bene, sono i campi dello stesso tipo?

(funziona anche nel 2005, secondo la documentazione e non è necessario() sulla seconda frase).

+1

MINUS è sintassi Oracle –

+0

Yope varchar 16 – bizness

0

Quando esegue il seguente funziona benissimo:

with PartProductSupplemental as 
(
    SELECT 1 sku 
    UNION 
    select 2 
    UNION 
    SELECT 3 
    UNION 
    select 4 
    UNION 
    SELECT 5 
), 
Inventory as 
(
    SELECT 1 sku 
    UNION 
    select 2 
    UNION 
    SELECT 3 

) 

SELECT SKU 
FROM PartProductSupplemental 
EXCEPT 
SELECT SKU 
FROM Inventory 

Sei sicuro che questo è in realtà quello che si sta eseguendo? C'è qualche sql sopra questo?

+0

No, lo giuro, dice solo sintassi errata vicino eccetto, e mi piace ma perché, e poi guardo su interwebs e dice che questo è come lo facciamo – bizness

+0

Lol, ti credo che lanci l'errore. C'è qualche SQL sopra la sezione che usa il 'EXCEPT'. La tua sintassi è valida, quindi qualcos'altro è attivo. –

+0

SELECT COUNT (*) FROM (SELECT SKU DA PartProductSupplemental TRANNE SELEZIONA SKU dall'inventario ) – bizness