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