sqlserverを使用しています。私は3つのテーブル、TableA、TableBとTableMain、Date、StartTimeとFinishTimeカラムを持っています。これらの3つのテーブルは共通のCustomerIDで結合できます。残念ながら、TableMainはday_of_weekを持ち、他の2つは日付を持っています。私は、日付、day_of_weekとcustomeridでクエリする必要があります。下のSQLでは、土曜日に対応する日付2016-10-14を使用しています。私が使用したSQLは以下の通りです。しかし、SQLはコンパイルされません。私は "キーワード 'の近くで誤った構文を' 'エラーにしています。結合テーブルがSQLに存在する場合、値を置換する方法
TableAの:
CustomerID Date StartTime
100 10/14/2016 11:00 AM
100 10/16/2016 10:00 AM
101 10/18/2016 11:30 AM
TableBの:
CustomerID Date FinishTime
100 10/15/2016 3:00 PM
101 10/16/2016 4:00 PM
102 10/17/2016 6:30 PM
102 10/18/2016 5:00 PM
TableMain:
CustomerID Day_of_week StartTime FinishTime
100 Monday 8:00 AM 10:00 PM
100 Tuesday 8:00 AM 10:00 PM
100 Wednesday 8:00 AM 10:00 PM
100 Thursday 8:00 AM 10:00 PM
100 Friday 8:00 AM 10:00 PM
100 Saturday 8:00 AM 10:00 PM
予想される出力:
CustomerID Day_of_the_week StartTime FinishTime
100 Saturday 11:00 AM 10:00 PM
SQL私がこれまで持っている:あなたが見逃している
select
t.StartTime, t.FinishTime, t.CustomerID
from
(select
tm.CustomerID as CustomerID,
case
when tb.FinishTime is not null
then tb.FinishTime
else tm.FinishTime
as FinishTime,
case
when ta.StartTime is not null
then ta.StartTime
else tm.StartTime
as StartTime,
from
TableMain tm
left join
TableB tb on tm.CustomerID = tb.CustomerID
left join
TableA ta on tm.CustomerID = ta.CustomerID
where
tm.day_of_week = 'SATURDAY'
and tb.Date = '2016-10-14'
and ta.Date = '2016-10-14') t
ありがとうございました!それは魅力のように働いた。また、その背後にある論理を説明することに感謝してくれました。 – Massey