У меня есть три DM_EVENT.event_code
«S:SQL - Specific DATEADD Требование
'DRL'
'CMP'
'WOV'
Я Нуждаясь использовать параметр даты, чтобы выбрать самую последнюю желаемую дату отчетности (в данном примере: '4/28/15'
), чтобы вытащить SUM(DM_DAILYCOST.cost_per_item)
от эта дата. 'CMP'
и 'WOV'
в порядке, используя выбранную дату.
Однако, для кода 'DRL'
, мне нужно потянуть SUM(DM_DAILYCOST.cost_per_item)
за DATEADD(d,-1,'4/28/15')
.
Я думаю, что я делаю это сложнее, чем нужно, но я придерживаюсь решения. Любое понимание очень ценится!
SELECT cd_well.completion_well_id,
cd_well.spud_date,
cd_well.well_common_name,
dm_afe.afe_no,
dm_dailycost.activity_code,
dm_dailycost.activity_subcode,
dm_dailycost.cost_code,
Sum(dm_dailycost.cost_per_item) AS Expr1,
dm_dailycost.cost_subcode,
dm_event.date_ops_end,
dm_event.event_code
FROM dm_dailycost
INNER JOIN dm_afe
ON dm_dailycost.afe_id = dm_afe.afe_id
INNER JOIN dm_afe_event_link
ON dm_afe.afe_id = dm_afe_event_link.afe_id
INNER JOIN dm_event
ON dm_afe_event_link.well_id = dm_event.well_id
AND dm_afe_event_link.event_id = dm_event.event_id
AND dm_dailycost.well_id = dm_event.well_id
AND dm_dailycost.event_id = dm_event.event_id
INNER JOIN cd_well
ON dm_event.well_id = cd_well.well_id
INNER JOIN cd_site
ON cd_well.site_id = cd_site.site_id
INNER JOIN dm_report_journal
ON dm_dailycost.afe_id = dm_report_journal.afe_id
WHERE (dm_report_journal.date_report BETWEEN '4/1/15' AND '4/28/15')
OR (dm_report_journal.date_report IS NULL)
GROUP BY dm_dailycost.activity_subcode,
dm_dailycost.cost_code,
dm_event.date_ops_end,
cd_well.spud_date,
cd_well.completion_well_id,
dm_event.event_code,
dm_afe.afe_no,
dm_dailycost.cost_subcode,
dm_dailycost.activity_code,
cd_well.well_common_name,
dm_report_journal.date_report
HAVING (Sum(dm_dailycost.cost_per_item) IS NOT NULL)
Хех, похоже, EDM;) – denied