मैं उन सभी पट्टे को खोजने की कोशिश कर रहा हूं जो किराये की अवधि में नहीं आते हैं। मेरी टेबल की संरचना इस प्रकार है:

इकाई उपलब्धता तालिका:

Unit Key  Start Date    End Date  Availability
     1     1/1/2015     6/1/2015       1
     1     6/2/2015   12/31/2015       0
     1     1/1/2016   12/31/2016       1
     2     1/1/2015     6/1/2015       1
     2     6/2/2015   12/31/2015       0

पट्टा तालिका:

Unit Key  Lease Start  Lease End
     1     1/1/2015     6/1/2015
     1     7/2/2015     8/2/2015

मैं उन सभी पट्टे को निर्धारित करने के लिए एक तर्क लिखना चाहता हूं जो उपलब्धता अवधि में नहीं आते हैं। इस मामले में, पट्टा तालिका में दूसरी पंक्ति आउटपुट होनी चाहिए।

किसी भी प्रकार की मदद या नेतृत्व की बहुत सराहना की जाएगी।

0
Ashwin 16 जुलाई 2017, 07:37
डेटा के लिए टेक्स्ट के बजाय नमूना डेटा के बजाय छवि पोस्ट करना यहां बहुत अशिष्ट माना जाता है। आप नए हैं, इसलिए आपको एक पास मिलता है, लेकिन पाठ हमारे लिए नमूना तालिका सेट करना आसान बनाता है ताकि यह सुनिश्चित हो सके कि हमारे उत्तर अच्छे हैं।
 – 
Joel Coehoorn
16 जुलाई 2017, 07:47
धन्यवाद, जोएल, मुझे नहीं पता था कि यह कैसे करना है। लेकिन संपादन के लिए धन्यवाद। आप से मिली मदद मेरे लिए सच में सराहनीय है।
 – 
Ashwin
16 जुलाई 2017, 21:12

2 जवाब

आपको NOT EXISTS कथन का उपयोग करना चाहिए:

SELECT * FROM LEASE L
WHERE NOT EXISTS (SELECT * FROM AVAILABILITY A
  WHERE A.UNIT_KEY = L.UNIT_KEY
  AND A.AVAILABILITY = 1
  AND A.START_DATE <= L.LEASE_START
  AND A.END_DATE >= L.LEASE_END);
0
p1erstef 16 जुलाई 2017, 09:11

मेरा अनुमान है कि Availability = 0 का अर्थ है कि यह उपलब्ध नहीं है।

select distinct
  Lease.*
from
  Lease
  join UnitAvailability on
    Lease.UnitKey = UnitAvailability.UnitKey
    and Lease.LeaseStart <= UnitAvailability.EndDate
    and Lease.LeaseEnd >= UnitAvailability.StartDate
where
  Availability = 0
0
Jeremy Fortune 16 जुलाई 2017, 15:26