나는 어떻게 추가 제대로 이에 대한 쿼리를 기반으로 기존의 쿼리에는 쿼리 디자이너?

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'

나의 질문이었다고 싶어를 선택하는 방법 첫 번째 코멘트로 만든 각 판매합니다. 나는에 대한 쿼리를 선택하는 플래그 지정 코멘트 그러나 나는 모두를 원하는 첫 번째 행에 표시 comment. 그들은 모두에서 당일 수 있습니다. 이 제공한 쿼리를 그리고 그것은 일에 그것의 자신의 그러나 나는 그 밖으로 작동하게 하는 방법으로 기존의 쿼리가 있습니다.

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 JOINWHERE 조건이 있습니다. 아마도 그 조건자되어 있어야에서 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ý
..................................................................................................................