无法替换完整连接上的结果空值

时间:2018-03-21 17:31:06

标签: sql-server

我有一组使用完全连接的选择查询(必需),并希望用其他东西替换结果空值(在下面的例子中,它应该是"空")。 对于第一列(以及所有其他人,老实说)我尝试过使用isnull(),coallesce(),case when甚至try_convert,但结果始终为null。我可以使用null,因为在这种特殊情况下意味着第一个查询的结果不存在第二个查询,这是我的目标。 有以下相同的查询,也是完全连接,因此第一个查询中的一行可能不在第二个查询中,但可能在第四个查询的第三个中。

这是select语句

SELECT *
FROM   (SELECT Isnull(1, 'empty') AS SubGroup
               , table2.lineintid AS OrderByThis2nd
               , table2.HeaderStamp AS HeaderLink
               , table2.linestamp AS LineID
               , table2.lprocessname AS LineProcName
               , table2.lprocessno AS LineProcNumber
               , table2.productid AS ProdId
               , table2.prodamount AS QTT
               , table2.prodval AS UnitPrice
        FROM   table2 (nolock)
               INNER JOIN table1 ON table2.headerstamp = table1.headerstamp
        WHERE  table1.lprocessname = 'Phase 1')Proc1L
       FULL JOIN (SELECT Isnull(2, 'empty') AS SubGroup
                         , table2.lineintid AS OrderByThis2nd
                         , table2.linestamp AS LineID
                         , table2.prevlstamp AS PrecedingLine
                         , table2.lprocessname AS LineProcName
                         , table2.lprocessno AS LineProcNumber
                         , table2.productid AS ProdId
                         , table2.prodamount AS QTT
                         , table2.prodval AS UnitPrice
                  FROM   table2 (nolock)
                         INNER JOIN table1 ON table2.headerstamp = table1.headerstamp
                  WHERE  table1.lprocessname = 'Phase 2'
                     AND Year(table2.linedate) = '2018')Proc2L ON Proc1L.LineID = Proc2L.PrecedingLine
ORDER  BY 1 DESC
          , 2 

此数据库位于MS SQL 2014中。 任何想法都表示赞赏。非常感谢你!

1 个答案:

答案 0 :(得分:0)

尝试在外部查询中使用ISNULL函数。而不是

select * from

使用

Select isnull(col1, 'x'), etc 
from