我有一个包含四列的表
ID, day, Shift 1 and shift 2
id是30,32
今天是今天和昨天,
班次1和班次2对于今天的进入具有一些值
没有ID为32的数据
我希望如果特定ID的数据不存在,则应显示“-”
当前输出为
ID, day, shift1, shift2
30, today, 4, 4
30, yesterday, 5, 6
32, yesterday, 9, 8
但我想要输出为
ID, day, shift1, shift2,
30, today, 4, 4
32, today, -, -
30, yesterday, 5, 6
32, yesterday, 9, 8
如果每天没有任何ID的数据,那么在班次中应显示为-
请给我一些建议。谢谢
答案 0 :(得分:1)
select id, day, ifnull(shift1,'-') as shift1, ifnull(shift2,'-') as shift2
from tablename
您的标签是mysql,因此首先是mysql的答案
但是您的标题是sql server,所以在sql server的答案下面:
select id, day, isnull(shift1,'-') as shift1, isnull(shift2,'-') as shift2
from tablename
您显然需要用表的实际名称替换表名
答案 1 :(得分:1)
如果移位列是字符串,则可以使用coalesce()
:
select id, day, coalesce(shift1, '-') as shift1, coalesce(shift2, '-') as shift2
from tablename;
但是,如果列为数字,则此操作将无效。在这种情况下,您需要先将值转换为字符串:
select id, day,
coalesce(cast(shift1 as varchar(255)), '-') as shift1,
coalesce(cast(shift2 as varchar(255)), '-') as shift2
from tablename;
MySQL中的语法略有不同:
select id, day,
coalesce(cast(shift1 as char), '-') as shift1,
coalesce(cast(shift2 as char), '-') as shift2
from tablename;