-1

我一直在这样做

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' 与 art.Unidad 不匹配时,如果匹配,则添加 1 或 0

SQL Server 说:

不正确的语法 CASE

4

2 回答 2

1

不正确的语法错误是指

error = CASE part. 

它应该是

CASE statement END AS error

但是,我不确定这是否能解决您的问题,因为 case 语句对我来说看起来有点奇怪,但要正确处理这一点,然后让我们知道任何进一步的错误消息。

可能...

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

此外,您缺少 GROUP BY 子句,如果要使用聚合函数(例如 MIN),则需要对非聚合字段进行 GROUP BY。

于 2013-05-21T15:54:36.577 回答
0

你有WHEN MIN (ar.Unidad) LIKE com.Unidad THEN art.Unidad,但我没有在任何地方看到ar别名。

此外,您需要在 MIN 中使用 GROUP BY 或 OVER 子句。

如果您想要更多详细信息,则必须提供更多详细信息和上下文。

于 2013-05-21T17:42:48.140 回答