私は自分の仕事にOracleを使用していますが、次のスクリプトを持っています。データとゾーン番号を入れてテーブルaとdに移動したいと思います。しかし、私のテーブルでは、私はドン; tはシフトを持っているので、私はステートメントを現金を使用してシフトを作成するが、私はテーブルのシフトで作成したシフトに参加する必要がありますが、SQLの作品と私にしたいデータを与えるが、これが正しい方法であることを確認したいだけです!Where節の節を使用する場合
select distinct
a.trn_plan_date as route_date,
next_day(a.trn_plan_date - 1,'Sunday') as route_week,
a.trn_zone_code as zone,
case when to_number(to_char(a.cutoff_datetime,'HH24'))<20 then 'AM' else 'PM' end as shift,
d.ampm_shift,
max(d.ups_checkin_time) as Ups,
d.productivity_region,
'PLANNED_DEPOT_RUNNER' as hour_type,
24*(a.truck_endtime - a.truck_dispatchtime)*count(distinct b.trn_resource_id) as hours,
c.last_week as last_week_flag,
c.month_to_date as month_to_date_flag,
c.last_month as last_month_flag
from
fd_stg.trn_plan_tra a,
fd_stg.trn_plan_resource_tra b,
fd_dw.date_dim c,
fd_dw.route_dim d
where
a.trn_plan_id = b.trn_plan_id
and a.trn_plan_date = c.calendar_date
and case when to_number(to_char(a.cutoff_datetime,'HH24'))<20 then 'AM' else 'PM' end=d.ampm_shift
and a.trn_plan_date = d.route_date
and a.trn_zone_code = d.zone
and (c.last_month='Y'
or c.month_to_date='Y'
or c.last_week='Y')
and (a.trn_region_code = 'Depot' or a.trn_zone_code in('970','971'))
and b.role = '003'
and a.trn_zone_code is not null
group by
a.trn_plan_date,
a.trn_zone_code,
case when to_number(to_char(a.cutoff_datetime,'HH24'))<20 then 'AM' else 'PM' end,
d.productivity_region,
d.ampm_shift,
a.truck_endtime - a.truck_dispatchtime,
c.last_week,
c.month_to_date,
c.last_month
Order by 1,3,4
*決して* FROM句にカンマを使用しないでください。 *常に*適切で明示的な 'JOIN'構文を使用します。 –
ありがとう、私はそれに注意します。しかし、あなたは私のスクリプトに何か間違っていることを教えてもらえますか、特に私はシフトを一緒に参加するwhere句へのケースを使用しました –