【问题标题】:isnull not working SQL Serverisnull 不工作 SQL Server
【发布时间】:2015-08-13 18:31:41
【问题描述】:

我有以下问题,我正在使用多个位置进行选择。 示例:

select isnull(fechamov,0)
from movimientos
where (provedor='1000' and depto='20') or
      (provedor='1001' and depto='200')

结果:

|fecha de movimiento|
|2015-02-20|

问题是在某些情况下没有日期,咨询 100 个不同的 Where just throws me 90 dates,其他 10 个不存在。我想做的是这样的:

select isnull(fechamov,0)
from movimientos
where (provedor='1000' and depto='20') or
      (provedor='1001' and depto='200')

结果:

|Fechamovimiento|
|0|
|2015-02-20|

并尝试 isnull , coalesce ,将 null 结果替换为 0 但不替换。 有没有办法解决这个问题?

【问题讨论】:

  • 请阅读How to Ask。那么请正确格式化您的问题。

标签: sql sql-server coalesce isnull


【解决方案1】:

试试这个

select isnull(fechamov,0)
from movimientos
where (provedor='1000' and depto='20') or
      (provedor='1001' and depto='200') or fechamov is null

这会将包含空值的 10 行的其余部分添加到 fechamov,正如您可能正在寻找的那样

【讨论】:

    【解决方案2】:

    你需要一个left join:

    with p as (
          select '1000' as prevedor, '20' as depto union all
          select '1001', '200'
        )
    select coalesce(m.fechamov,0)
    from p left join
         movimientos m
         on m.prevedor = p.prevedor and m.depto = p.depto;
    

    【讨论】:

      【解决方案3】:

      请试试这个

      select isnull(fechamov,0)
      from movimientos
      where (provedor='1000' and depto='20') or
      (provedor='1001' and depto='200') 
      union 
      select isnull(fechamov,0)
      from movimientos
      where  fechamov is null
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-12
        • 2017-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多