2016-06-14 82 views
0

以下SQL回报只是根据需要,除了当没有返回数据格式正确的数据。SQL Server 2008中聚结

期望的结果 - 使用上ename-- 聚结是没有返回数据时返回“无”。

它是什么,我就聚结做错了什么?为什么没有数据返回时它不返回'无'?

当返回的数据,我们得到了所有的列名,并全部为空。

所有指针和建议表示赞赏。

select 
     ltrim(right(convert(varchar(20), tstart, 100), 7)) 
     as 'START TIME', 
     ltrim(right(convert(varchar(20), tend, 100), 7)) 
     as 'END TIME', 
    coalesce(vb.tname, 'none') as TITLE, 
     tr.description as LOCATION 
from vwbooks vb 
join troom tr 
    on vb.room = tr.id 
where vb.room in(select id 
        from tblroom 
        where building = 4971 
    and vb.tstart >= floor(cast(getdate() as float)) 
    and vb.tstart < ceiling(cast(getdate() as float)) 
    and datepart(hour, vb.tstart) between 6 and 18 
+1

也许'vb.tname'永远不能为null,当你的数据吗?也许你打算做一个'left join'来取代vwbooks的所有数据,即使在troom里没有匹配的数据?没有看到一些样本输入数据以及实际和预期的结果,很难说什么可能是错误的。 – jpw

+0

@jpw是对的,你返回0行。你正在将它们解释为null。你需要明白为什么没有返回。 P,当它连续时,聚结将起作用! – Mike

+0

现货上。谢谢。 – user761758

回答

0

您正在返回0行。你正在将它们解释为null。你需要明白为什么没有返回。当它连续发生时,聚结将起作用!