我写过这样的查询。它正在工作,并给我我想要的结果。
我有一个SELECT
查询来获取CAR_AMOUNT
和HOTEL_AMOUNT
。
但是,我不得不重复同样的SELECT
查询来获取两者的SUM
。我无法使用别名。我怎样才能避免这种情况?如何重写此查询而不重复SELECT子查询
SELECT B.EMPLOYEE_ID,
(select SUM(AMOUNT)
FROM travel_reimbursements_items
WHERE type = 'CAR'
AND travel_request_no = B.travel_request_no
AND STATUS='APPROVED') as CAR_AMOUNT,
(select SUM(AMOUNT)
FROM travel_reimbursements_items
WHERE type = 'HOTEL'
AND travel_request_no = B.travel_request_no
AND STATUS='APPROVED') as HOTEL_AMOUNT,
NVL((select SUM(AMOUNT)
FROM travel_reimbursements_items
WHERE type = 'CAR'
AND travel_request_no = B.travel_request_no
AND STATUS='APPROVED'),0)
+NVL((select SUM(AMOUNT)
FROM travel_reimbursements_items
WHERE type = 'HOTEL'
AND travel_request_no = B.travel_request_no
AND STATUS='APPROVED'),0) as TOTAL
FROM TRAVEL_REQUEST_ITEM A
LEFT OUTER JOIN TRAVEL_REQUEST B
ON (B.TRAVEL_REQUEST_NO= A.TRAVEL_REQUEST_SR_NO)
哪种味道的SQL? SQL Server,Oracle ...? – Fionnuala 2012-03-30 12:45:50
对不起...忘了提及它..它的Oracle .... – Andromeda 2012-03-30 12:46:46
为什么你不在应用程序级别上进行总结,我希望在你的情况下是可能的。 – 2012-03-30 12:47:44