Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

जहां क्लॉज में चुनिंदा मैक्स () फंक्शन के साथ एसक्यूएल क्वेरी में सुधार करें

इसे आजमाएं:

;WITH CurrentPrice AS 
(
SELECT productid,max(Date) AS Date
    FROM productprice 
    WHERE date < @DateIn 
    GROUP BY productid
)

select  
    p.ProductName,
    pp.Price,
    pp.Date,
    from product p
        inner join CurrentPrice pa  on p.productid = pa.productid
        inner join productprice pp  on pa.productid = pp.productid AND pa.Date=pp.Date
    where p.producttype = 'OnSale'

संपादित करें ओपी की टिप्पणी के आधार पर:

मुझे लगता है कि सीटीई के साथ उपरोक्त क्वेरी में वही क्वेरी प्लान होगा जो @Remus Rusanu से व्युत्पन्न तालिका संस्करण

हालांकि, अगर productprice तालिका बड़ी है, आप इसे "OnSale . द्वारा फ़िल्टर करके कम करना चाह सकते हैं "यहां पसंद करें:

;WITH CurrentPrice AS 
(
select  
    p.productid,
    MAX(pp.Date) AS Date
    from product p
        inner join productprice pp  on pa.productid = pp.productid
    where p.producttype = 'OnSale' AND pp.date < @DateIn 
    GROUP BY productid
)
select  
    p.ProductName,
    pp.Price,
    pp.Date,
    from CurrentPrice           pa
        inner join product      p   on pa.productid = p.productid
        inner join productprice pp  on pa.productid = pp.productid AND pa.Date=pp.Date
    where p.producttype = 'OnSale'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में डेटाबेस में सभी तालिकाओं के लिए कॉलम विवरण जोड़ें कैसे उत्पन्न करें - SQL सर्वर / टी-एसक्यूएल ट्यूटोरियल भाग 49

  2. एकाधिक तालिकाओं के लिए SQL सर्वर विदेशी कुंजी

  3. GETDATE() SQL सर्वर में उदाहरण (T-SQL)

  4. मैं कैसे हल कर सकता हूं या तो पैरामीटर @objname अस्पष्ट है या दावा किया गया @objtype (COLUMN) गलत है।

  5. SQL सर्वर में एक विदेशी कुंजी कैसे बनाएं (T-SQL उदाहरण)