यह अस्थायी तालिकाओं
की मदद से काम करने के लिए मिल गया
SELECT
s.SellerId,
ProductList = STUFF((
SELECT ',' + ProductCode FROM Stocks
WHERE s.SellerId = Stocks.SellerId
ORDER BY ProductCode FOR XML PATH('')
)
, 1, 1, ''), COUNT(*) AS numberOfProducts
INTO #tmptable
FROM
Stocks s
WHERE
s.ProductCode IN ('30A','20A','42B')
AND s.StockData > 0
GROUP BY s.SellerId;
/*this second temp table is necessary, so we can delete from one of them*/
SELECT * INTO #tmptable2 FROM #tmptable;
DELETE t1 FROM #tmptable t1
WHERE EXISTS (SELECT 1 FROM #tmptable2 t2
WHERE t1.SellerId != t2.SellerId
AND t2.ProductList LIKE '%' + t1.ProductList + '%'
AND t2.numberOfProducts > t1.numberOfProducts)
;
SELECT Name FROM #tmptable t INNER JOIN Sellers ON t.SellerId = Sellers.Id;
अद्यतन:
CREATE TABLE tmptable (SellerId int, ProductList nvarchar(max), numberOfProducts int);
tmpTable2 के लिए एक ही:
कृपया स्थिर तालिकाओं के साथ एक कोशिश की है। तब
INSERT INTO tmpTable
SELECT
s.SellerId,
ProductList = STUFF((
SELECT ',' + ProductCode FROM Stocks
WHERE s.SellerId = Stocks.SellerId
ORDER BY ProductCode FOR XML PATH('')
)
, 1, 1, ''), COUNT(*) AS numberOfProducts
FROM
Stocks s
WHERE
s.ProductCode IN ('30A','20A','42B')
AND s.StockData > 0
GROUP BY s.SellerId;
INSERT INTO tmpTable2 SELECT * FROM tmpTable;
DELETE t1 FROM tmptable t1
WHERE EXISTS (SELECT 1 FROM tmptable2 t2
WHERE t1.SellerId != t2.SellerId
AND t2.ProductList LIKE '%' + t1.ProductList + '%'
AND t2.numberOfProducts > t1.numberOfProducts)
;
SELECT * FROM tmpTable;
DROP TABLE tmpTable, tmpTable2;
कौन सा आरडीबीएमएस को कोड ऊपर बदलने के प्रयोग कर रहे हैं, एमएस एसक्यूएल सर्वर, MySQL, PostgreSQL ...? मुझे लगता है कि एमएस एसक्यूएल सर्वर एसक्यूएल फिडल इसका उपयोग कर रहा है। आवश्यक टैग जोड़ें। और आपके द्वारा जोड़ा गया एसक्यूएल फिडल लिंक, अपने प्रश्न को बेहतर तरीके से संपादित करें और इसे वहां जोड़ें, इसलिए प्रश्न देखने वाले अन्य उपयोगकर्ताओं को यह सुनिश्चित करने के लिए सभी टिप्पणियों को देखने की आवश्यकता नहीं है कि उनके पास सभी जानकारी – Yaroslav
है, मुझे लगता है कि यहां समस्या ओज़ान है आदेश की पूर्ति करने वाले न्यूनतम आपूर्तिकर्ताओं को ढूंढना चाहता है। आप संभवतः आपूर्तिकर्ताओं की सूची को उन वस्तुओं की कुल संख्या से ऑर्डर करना चाहते हैं, जिन्हें वे आपूर्ति कर सकते हैं, हालांकि कोडिंग मुश्किल हो सकती है। – bendataclear
मुझे लगता है कि आपकी समस्या यहां वर्णित है तो यहां वर्णित है। क्या होगा यदि दोनों विक्रेताओं के पास समान मात्रा में उत्पाद हों (लेकिन विभिन्न उत्पाद?) –