0
次のsqlは、データが返されない場合を除いて、必要に応じて正しい形式のデータを返します。Sql Server 2008 coalesce
希望の結果 - ename_ で合体を使用すると、データが返されないときに 'none'が返されます。
私は合体で間違っていますか?データが返されないときに「none」を返さないのはなぜですか?
データが返されない場合、すべての列名が取得され、すべてがnullです。
すべての指針と提案が高く評価されています。
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
データを取得したときに 'vb.tname'がnullになることはありませんか?たぶん、あなたはtwroomに一致するデータがないのにvwbooksからすべてのデータを取得する代わりに 'left join'を行うつもりでしたか?実際の結果と予想される結果とともにいくつかのサンプル入力データを見ることなく、何が間違っているのかは分かりません。 – jpw
@jpwが正しく、0行を返しています。これらをnullと解釈しています。何も返されない理由を理解する必要があります。 Pは、合体は行を取得したときに動作します! – Mike
スポットがあります。ありがとうございました。 – user761758