当前位置: 代码迷 >> Sql Server >> 查询数据显示有关问题
  详细解决方案

查询数据显示有关问题

热度:7   发布时间:2016-04-24 09:31:40.0
查询数据显示问题
select a.bh,(select b.ksmc from ksb as b where b.xh = a.ks) as ks,(select c.gzmc from gzlxb as c where c.bh = a.gzlx) as gzlx
,(select d.zgxm from yggl as d where d.zggh = a.apr) as apr,(select e.zgxm from yggl as e where e.zggh = a.zxr) as zxr 
,(select f.zgxm from yggl as f where f.zggh = a.qrr) as qrr,a.zy,a.xxms,a.kssj,a.zxsj,a.jssj,(select g.bz1 from zdb as g where g.xh = a.wcqk and g.lx = '完成情况') as wcqk
,(select h.bz1 from zdb as h where h.xh = a.zy_flag and h.lx = '重要情况') as zy_flag
,(select i.bz1 from zdb as i where i.xh = a.diff and i.lx = '工作分级') as diff
from gzrz as a order by a.wcqk asc,a.kssj desc

使用这种方式(select b.ksmc from ksb as b where b.xh = a.ks) as ks
只要其中一个表达式有空值或null,该行就不能够查询出来显示

请问需要怎么修改或使用其他方式做到?
------解决思路----------------------
不建议这种方式查询

不过真要用的话
再在外面套一个查询,不要那些有空值的行即可
------解决思路----------------------
不会啊,有空值的行照样输出的。
with a(id,c1,c2) AS (
    SELECT 1,1,2 UNION ALL
    SELECT 2,2,NULL UNION ALL
    SELECT 3,NULL,2 UNION ALL
    SELECT 4,2,3
)
,b (id,name) AS (
    SELECT 1,'A' UNION ALL
    SELECT 2,'B'
)
SELECT a.id,
       a.c1,
       (SELECT b.name FROM b WHERE b.id = a.c1) name1,
       a.c2,
       (SELECT b.name FROM b WHERE b.id = a.c2) name2
  FROM a

         id          c1 name1          c2 name2
----------- ----------- ----- ----------- -----
          1           1 A               2 B
          2           2 B            NULL NULL
          3        NULL NULL            2 B
          4           2 B               3 NULL

  相关解决方案