2013-05-21 5 views
-1

Я делал этоКак сделать счетчик SQL Server 2008?

SELECT 
    movi.Usuario AS RowUsuario, movi.MovID, MIN(Art.Descripcion1), 
    MIN(com.ReferenciaExtra), MIN(com.Unidad), MIN(Art.UnidadCompra), 
    MIN(movi.FechaEmision), 
    error = CASE 
     WHEN MIN (com.Unidad) NOT LIKE 
      CASE 
       WHEN MIN (ar.Unidad) LIKE com.Unidad THEN art.Unidad 
      END 
     THEN 1 
     ELSE 0 
    END 
FROM 
    CompraD com 
INNER JOIN 
    Mov movi ON com.ID = movi.ID 
INNER JOIN 
    Art ON com.Articulo = Art.Articulo 
WHERE 
    movi.Mov = 'Requisicion 
ORDER BY 
    movi.FechaEmision ASC 

`когда 'com.unidad' Dont матч с art.Unidad, добавьте 1 или 0, если они соответствуют

SQL Server говорит:

некорректный синтаксис СЛУЧАЙ

ответ

1

Неверная ошибка синтаксиса имеет в виду

error = CASE part. 

Это должно быть

CASE statement END AS error 

Однако я не уверен, если это решит вашу проблему, как заявления случае выглядит немного странно для меня, но получить этот бит правильный путь вокруг, а затем дайте нам знать любых дополнительных сообщений об ошибках.

Возможно ...

SUM(CASE WHEN com.Unidad <> ar.Unidad THEN 1 ELSE 0 END AS error) 

Кроме того, вам не хватает предложения GROUP BY, если вы хотите использовать агрегатные функции (MIN, например), вы должны GROUP BY, не являющихся агрегатных полей.

+0

Некорректного синтаксис на ДЕЛУ – manuel0112358

+0

ВЫБРАТЬ movi.Usuario AS RowUsuario, movi.MovID, Art.Descripcion1, com.ReferenciaExtra, com.Unidad, Art.UnidadCompra, movi.FechaEmision, случая, когда com.Unidad! = Art.Unidad THEN 1 ELSE 0 КОНЦА ОТ CompraD ком INNER JOIN Mov MOVI НА com.ID = movi.ID INNER JOIN Art ON com.Articulo = Art.Articulo WHERE movi.Mov = 'Requisicion' Этот код работает ! – manuel0112358

+0

'alias = expression' является допустимым синтаксисом в Transact-SQL. Это эквивалентно стандартным SQL-выражениям AS alias', который также работает в T-SQL. –

0

У вас есть WHEN MIN (ar.Unidad) LIKE com.Unidad THEN art.Unidad, но я не вижу ar aliased везде.

Также вам нужно иметь предложение GROUP BY или OVER с помощью MIN.

Если вы хотите получить более подробную информацию, вам нужно будет предоставить более подробную информацию и контекст.