以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  目录树列如果有空值就显示不出来sql语句如何写?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=107727)

--  作者:happyft
--  发布时间:2017/10/8 19:11:00
--  目录树列如果有空值就显示不出来sql语句如何写?
目录树列的值有时会有上万,为了方便显示,用了下面的sql查询语句分页生成表再建立目录树
SE LECT TOP 200 * FROM
(
    SE LECT *,ROW_NUMBER() OVER (ORDER BY 客户, 订单编号) AS RowNum FROM 
    (SE LECT DISTINCT isnull(客户,\'空\'), isnull(订单编号,\'空\') FROM 订单) AS a
) b 

上面的语句的红色部份是想实现如果目录树列中的任何一列为空时就用空字符代替,要怎么样写才正确? 还有这样会影响效率吗?
有没有效率更高的写法?

谢谢!

--  作者:有点甜
--  发布时间:2017/10/8 19:24:00
--  

写在最外面即可,效率不会影响太多。

 

SELECT TOP 200 isnull(客户,\'空\') as 客户, isnull(订单编号,\'空\') as 订单编号 FROM


--  作者:HappyFt
--  发布时间:2017/10/18 20:14:00
--  
请教下下面的语句如果按2楼那样加上isnull判断时有日期列的形式要如何写

Se lect top 200 * from (Se lect *,ROW_NUMBER() OVER(ORDER BY 供应商,采购单号, DESC, DESC, DESC) As RowNum from (Se lect distinct 供应商,采购单号,Year(采购日期) As ,Month(采购日期) As ,Day(采购日期) As From uv_cg120 where 1 = 1) x ) y where RowNum > 0


上面*处不考虑空值的写法没问题,如果各列都要加上isnull的判断怎么写?

Se lect top 200 isnull(供应商,\'空\') as 供应商,isnull(采购单号,\'空\') as 采购单号,isnull(Year(采购日期),\'空\')) as 年,isnull(Month(采购日期),\'空\') As ,isnull(Day(采购日期,\'空\') As 日 

 from (Se lect *,ROW_NUMBER() OVER(ORDER BY 供应商,采购单号, DESC, DESC, DESC) As RowNum from (Se lect distinct 供应商,采购单号,Year(采购日期) As ,Month(采购日期) As ,Day(采购日期) As From uv_cg120 where 1 = 1) x ) y where RowNum > 0


上面的红色部份总是出错,应该怎么写?


谢谢!


--  作者:有点甜
--  发布时间:2017/10/18 20:24:00
--  

最外层,直接引用年、月、日即可。

 

IsNull(年, \'空\') as 年, IsNull(月, \'空\') as 月