मुझे लगता है कि आपको जोड़ने की जरूरत है...
AND outside.asset_tag=inside.asset_tag
...आपके ON
. में मापदंड के अनुसार सूची।
साथ ही एक RIGHT OUTER JOIN
आवश्यकता नहीं है। एक INNER JOIN
वही परिणाम देगा (और अधिक कुशल हो सकता है), क्योंकि asset_tag
के संयोजन नहीं हो सकते हैं और last_read_date
सबक्वेरी में जो mp_vehicle_asset_profile
. में मौजूद नहीं है ।
फिर भी, "संबंध" होने पर क्वेरी प्रति एसेट टैग की एक से अधिक पंक्ति लौटा सकती है -- यानी, एक ही last_read_date
वाली एकाधिक पंक्तियां . इसके विपरीत, @ लामक का विश्लेषणात्मक-आधारित उत्तर मनमाने ढंग से इस स्थिति में ठीक एक पंक्ति का चयन करेगा।
आपकी टिप्पणी से पता चलता है कि आप उच्चतम mtr_reading
. वाली पंक्ति चुनकर संबंध तोड़ना चाहते हैं last_read_date
. के लिए ।
आप ORDER BY
बदलकर ऐसा करने के लिए @ Lamak के विश्लेषणात्मक-आधारित उत्तर को संशोधित कर सकते हैं OVER
. में इसके लिए खंड:
ORDER BY last_read_date DESC, mtr_reading DESC
यदि अभी भी संबंध हैं (अर्थात, एक ही asset_tag
. के साथ एकाधिक पंक्तियाँ , last_read_date
, और mtr_reading
), क्वेरी फिर से अचानक से ठीक एक पंक्ति को चुन लेगी।
आप उच्चतम mtr_reading
. का उपयोग करके संबंध तोड़ने के लिए मेरे समग्र-आधारित उत्तर को संशोधित कर सकते हैं इस प्रकार:
SELECT
outside.asset_tag,
outside.description,
outside.asset_type,
outside.asset_group,
outside.status_code,
outside.license_no,
outside.rentable_yn,
outside.manufacture_code,
outside.model,
outside.manufacture_vin,
outside.vehicle_yr,
outside.meter_id,
outside.mtr_uom,
outside.mtr_reading,
outside.last_read_date
FROM
mp_vehicle_asset_profile outside
INNER JOIN
(
SELECT
asset_tag,
MAX(last_read_date) AS last_read_date,
MAX(mtr_reading) KEEP (DENSE_RANK FIRST ORDER BY last_read_date DESC) AS mtr_reading
FROM
mp_vehicle_asset_profile
GROUP BY
asset_tag
) inside
ON
outside.asset_tag = inside.asset_tag
AND
outside.last_read_date = inside.last_read_date
AND
outside.mtr_reading = inside.mtr_reading
यदि अभी भी संबंध हैं (अर्थात, एक ही asset_tag
. के साथ एकाधिक पंक्तियाँ , last_read_date
, और mtr_reading
), क्वेरी फिर से एक से अधिक पंक्तियाँ लौटा सकती है।
एक अन्य तरीका है कि विश्लेषणात्मक- और कुल-आधारित उत्तर भिन्न हैं, उनके नल के उपचार में है। अगर कोई asset_tag
, last_read_date
, या mtr_reading
शून्य हैं, विश्लेषणात्मक-आधारित उत्तर संबंधित पंक्तियों को लौटाएगा, लेकिन समग्र-आधारित उत्तर नहीं देगा (क्योंकि शामिल होने में समानता की स्थिति TRUE
का मूल्यांकन नहीं करती है। जब एक नल शामिल होता है।