निम्नलिखित क्वेरी कोई परिणाम नहीं लौटाती है, मैं अनुमान लगा रहा हूं क्योंकि मैं एक ही मूल्य पर एक पंक्ति में दो बार 'और' कर रहा हूं। अगर मैं इसे 'या' में बदलता हूं, तो मुझे जो चाहिए उसका 2/3 मिलता है लेकिन मुझे ऐसे उपयोगकर्ताओं की आवश्यकता होती है जिनके पास कई श्रेणियों में एकाधिक प्रविष्टियां हों - क्या प्रभावी ढंग से कहने का कोई तरीका है "मुझे उन उपयोगकर्ताओं को दें जिनकी गिनती 1 से अधिक है श्रेणी ए और श्रेणी बी" एसक्यूएल में?

SELECT TOP (20) UserId     
FROM PaymentRecord pr
inner join Transactions t on t.Entity = pr.UserId
where t.Category = 'CardSwipe' and t.Category = 'EFT'
group by pr.UserId
having count(t.CreatedAt) > 1
1
jalyper 5 अक्टूबर 2020, 22:17

1 उत्तर

सबसे बढ़िया उत्तर

एकत्रीकरण का प्रयोग करें:

select top (20) t.Entity as UserId
from Transactions t
where t.Category in ( 'CardSwipe',  'EFT')
group by t.Entity
having count(distinct t.Category) = 2;

जैसा कि आपने प्रश्न लिखा है, Users तालिका आवश्यक नहीं है -- जब तक कि लेन-देन में ऐसी "इकाइयाँ" न हों जो उपयोगकर्ता नहीं हैं, इसलिए join फ़िल्टरिंग के लिए है।

0
Gordon Linoff 5 अक्टूबर 2020, 22:19