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

सभी मानों के समूह वाले समूह का चयन करने के लिए SQL कथन

यदि ऑर्डर विवरण तालिका में ऑर्डर आईडी और उत्पाद आईडी पर एक अद्वितीय बाधा है, तो आप ऐसा कुछ कर सकते हैं:

Select ...
From Orders As O
Where Exists    (
                Select 1
                From OrderDetails As OD1
                Where OD1.ProductId In(1,2,3)
                    And OD1.OrderId = O.Id
                Group By OD1.OrderId
                Having Count(*) = 3
                )

यदि एक ही ProductId को एक ही ऑर्डर पर कई बार रखना संभव है, तो आप होने वाले क्लॉज को Count(Distinct ProductId) = 3 में बदल सकते हैं।

अब, उपरोक्त को देखते हुए, यदि आप ऐसी स्थिति चाहते हैं जहां प्रत्येक ऑर्डर में डुप्लिकेट उत्पाद प्रविष्टियों के साथ समान हस्ताक्षर हों, तो यह अधिक कठिन है। ऐसा करने के लिए आपको विचाराधीन उत्पादों पर आदेश के हस्ताक्षर की आवश्यकता होगी और फिर उस हस्ताक्षर के लिए प्रश्न पूछना होगा:

With OrderSignatures As
    (
    Select O1.Id
        ,   (
            Select '|' + Cast(OD1.ProductId As varchar(10))
            From OrderDetails As OD1
            Where OD1.OrderId = O1.Id
            Order By OD1.ProductId
            For Xml Path('')
            ) As Signature
    From Orders As O1
    )
Select ...
From OrderSignatures As O
    Join OrderSignatures As O2
        On O2.Signature = O.Signature
            And O2.Id <> O.Id
Where O.Id = 5


  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 सर्वर में मनी डेटाटाइप से कैसे परिवर्तित करूं?

  2. क्या MS SQL सर्वर में 'INSERT INTO' स्क्रिप्ट उत्पन्न करने के लिए कोई निःशुल्क उपकरण हैं?

  3. डेटाबेस रखरखाव योजना का उपयोग करके SQL सर्वर आँकड़े अपडेट करें

  4. SIN () SQL सर्वर में उदाहरण

  5. अद्यतन पर Sql सर्वर वर्तमान टाइमस्टैम्प सेट करता है