ยังไงฉันเหมาะสมเพิ่มการเข้าไปของฉันอยู่กับการค้นหาภายในกับการค้นหาดีไซเนอร์หรอครับ?

0

คำถาม

ฉันกำลังมีที่ด้านล่างการเขียนขึ้นภายในกับการค้นหาของดีไซเนอร์ ฉันถามคำถามเมื่อวานนี้และมันได้ผลด้วยตัวมันเองแต่ฉันอยากจะ incorporate นมันเป็นของฉันที่มีอยู่รายงาน

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

คุณสามารถใช้กับส่วนผสมของแถว-numbering และทั้งเธรดจะได้ทั้งสองอย่าง Flagged% หมายเหตุ,และครั้งแรกความเห็นเลิกประชุม.

คุณอาจจะต้องเปลี่ยน PARTITION BY เงื่อนไขว่าต้องถอดชุดสูทออกนะ

DISTINCT บริงๆข้างนอ query อาจจะเป็น spurious ในทางตนภายในกับการค้นหามัน อย่างแน่นอนคืออย่างที่คุณมี GROUP BY อยู่แล้ว ถ้าคุณกำลังจะหลายแถวอย่าพึ่งขว้าง DISTINCT ตอนมันแทนที่จะคิดว่าเรื่องของคุณจะมาร่วมกันและไม่ว่าคุณต้องการทั้งเธรด.

ที่สอง LEFT JOIN โดยพื้นฐานลายเป็นพว INNER JOIN เนื่องจากไป WHERE predicate. บางทีนั่น predicate ควรจะอยู่แต่ในห้อง 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ý
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่