首页 > 解决方案 > 显示同一列两次,结果不同

问题描述

我有一个包含启用和禁用值的列,该值由事件 ID 关联,在这个事件表中我有用户数据时间,我想创建一个查询并在同一行中显示启用事件的触发时间. 触发禁用的时间

SELECT
    valv.valvOf, valv.cam,
    cod.descOf Habilita, cod.descof Desabilita
FROM
    {oj (aspersao.dbo.events events LEFT JOIN aspersao.dbo.valv valv ON events.valv_id = valv."id") LEFT JOIN aspersao.dbo.cod cod ON events.cod_id = cod.id}
WHERE
    valv.cam = '1'
and 
    Habilita = 'Habilitou valvula'
and 
    Desabilita = 'Desabilitou valvula'

标签: sqlsql-server

解决方案


即使在更正您的代码以便您不试图通过WHERE子句中的别名来引用列之后,您的代码也是无稽之谈。没有行会有等于两个不同值的列。

很可能您想拉入桌子两次。我也摆脱了 ODBC 特定的花括号语法。

SELECT
    valv.valvOf, valv.cam,
    cod1.descOf AS Habilita, cod2.descof AS Desabilita
FROM
    aspersao.dbo.events AS events 
    LEFT JOIN aspersao.dbo.valv AS valv ON events.valv_id = valv."id"
    LEFT JOIN aspersao.dbo.cod AS cod1 
         ON events.cod_id = cod1.id     
         AND cod1.descOf = 'Habilitou valvula'
    LEFT JOIN aspersao.dbo.cod AS cod2
         ON events.cod_id = cod2.id     
         AND cod2.descOf = 'Desabilitou valvula'
WHERE
    valv.cam = '1'

这几乎是一个猜测,因为您的问题中确实没有足够的信息。

编辑:我在行中有错误的测试字符串cod2.descOf =;我已经解决了。


推荐阅读