如图所示,我想将第一张图的查询效果改为第二张的效果,怎么做?
select 列名称 from 表名称
select * from (
select p,c,t1 t from table
union all
select p,c,t2 t from table
) a group by p,c,t
试试这样行不行。没验证。
SELECT 人数,
班级,
(CASE WHEN 老师1 IS NOT NULL THEN 老师1 ELSE 老师2 END) 老师
FROM 表名
如果两个老师都有的时候是相同的话可以直接这样
不清楚你第一张表2个老师的字段有什么区别,暂时用老师A,老师B表示吧。你也没给字段,就用中文表示了。
select 人数,班级,case 老师A
when null then 老师B
else 老师A
end
from 表名。
判断老师A字段是否是null值,如果是,取老师B字段,如果不是null,则直接用老师A字段。如果2个字段都不是null而且值不一样,会取到老师A字段。
2个字段都是null,那取到的就是null。
select * from 表名 where 字段名=值
如果是mysql,可以使用ifnull函数,如果是oracle可以用nvl函数;
举个例子:上面四列,人数num,班级class_name,老师 t_name,老师t_nuick_name
oracle:select num,class_name,nvl(t_name,t_nick_name) from t_table
使用order by 或者 group by 你先试试
首先我觉得你应该把你第一张图的查询语句贴出来
其次我觉得你应该声明下你用的是什么数据库