2016-06-14 87 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。你需要明白爲什麼沒有返回。當它連續發生時,聚結將起作用!