मैं कैसे ठीक से जोड़ने इस क्वेरी में मौजूदा क्वेरी के भीतर क्वेरी डिज़ाइनर?

0

सवाल

मैं वर्तमान में नीचे लिखित क्वेरी के भीतर क्वेरी डिज़ाइनर. मैं एक सवाल पूछा, कल और यह काम किया है अपने दम पर, लेकिन मैं की तरह में शामिल करने के लिए अपने मौजूदा रिपोर्ट.

SELECT Distinct
       i.ProductNumber
  ,i.ProductType
  ,i.ProductPurchaseDate
  ,ih.SalesPersonComputerID
  ,ih.SalesPerson
  ,ic2.FlaggedComments

FROM [Products] i
        
LEFT OUTER JOIN 
    (SELECT Distinct
        MIN(c2.Comments) AS FlaggedComments
        ,c2.SalesKey 
        FROM [SalesComment] AS c2
        WHERE(c2.Comments like 'Flagged*%')
        GROUP BY c2.SalesKey) ic2 
    ON ic2.SalesKey = i.SalesKey

LEFT JOIN [SalesHistory] AS ih
    ON ih.SalesKey = i.SalesKey

WHERE
  i.SaleDate  between @StartDate and @StopDate
AND ih.Status = 'SOLD'

मेरा सवाल कल था कि मैं चाहता था एक तरह से चयन करने के लिए केवल पहली टिप्पणी किए गए प्रत्येक बिक्री के लिए. मैं एक क्वेरी का चयन करने के लिए झंडी दिखाकर रवाना किया टिप्पणियां लेकिन मैं चाहता हूँ कि दोनों की पहली पंक्ति और टिप्पणी झंडी दिखाकर रवाना किया. वे दोनों से खींच एक ही मेज. इस क्वेरी प्रदान की है और यह काम किया है अपने दम पर, लेकिन मैं खिचड़ी भाषा के लिए बाहर आंकड़ा कैसे बनाने के लिए यह काम के साथ अपने मौजूदा क्वेरी ।

SELECT a.DateTimeCommented, a.ProductNumber, a.Comments, a.SalesKey 
FROM (
    SELECT 
            DateTimeCommented, ProductNumber, Comments, SalesKey,
            ROW_NUMBER() OVER(PARTITION BY ProductNumber ORDER BY DateTimeCommented) as RowN
    FROM [SalesComment]
    ) a 
WHERE a.RowN = 1

बहुत बहुत धन्यवाद आपकी सहायता के लिए.

query-designer sql-server
2021-11-23 17:24:55
1

सबसे अच्छा जवाब

0

आप कर सकते हैं का एक संयोजन का उपयोग पंक्ति क्रमांकन और एकत्रीकरण प्राप्त करने के लिए दोनों Flagged% टिप्पणियाँ, और पहली टिप्पणी.

तुम चाहते हो सकता है बदलने के लिए PARTITION BY खंड के अनुरूप करने के लिए.

DISTINCT बाहरी पर क्वेरी है, शायद भ्रामक, पर भीतर यह प्रश्न निश्चित रूप से है, के रूप में आप है GROUP BY वैसे भी । यदि आप एकाधिक पंक्तियों के साथ, बस नहीं फेंक DISTINCT पर यह, इसके बजाय बारे में लगता है कि अपने मिलती है और कि क्या आप की जरूरत एकत्रीकरण.

दूसरी LEFT JOIN तार्किक रूप से हो जाता है एक INNER JOIN के कारण WHERE विधेय. शायद यह है कि विधेय किया गया है चाहिए में ON इसके बजाय?

SELECT
   i.ProductNumber
  ,i.ProductType
  ,i.ProductPurchaseDate
  ,ih.SalesPersonComputerID
  ,ih.SalesPerson
  ,ic2.FlaggedComments
  ,ic2.FirstComments

FROM [Products] i
        
LEFT OUTER JOIN 
    (SELECT
        MIN(CASE WHEN c2.RowN = 1 THEN c2.Comments) AS FirstComments
        ,c2.SalesKey 
        ,MIN(CASE WHEN c2.Comments like 'Flagged*%' THEN c2.Comments) AS FlaggedComments
        FROM (
            SELECT *,
              ROW_NUMBER() OVER (PARTITION BY ProductNumber ORDER BY DateTimeCommented) as RowN
            FROM [SalesComment]
        ) AS c2
        GROUP BY c2.SalesKey
    ) ic2 ON ic2.SalesKey = i.SalesKey

JOIN [SalesHistory] AS ih
    ON ih.SalesKey = i.SalesKey

WHERE
  i.SaleDate between @StartDate and @StopDate
AND ih.Status = 'SOLD'
2021-11-23 23:52:06

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में