1
아래의 쿼리는 제품의 최저 가격을 찾는 데 사용됩니다.그룹별로 중복 기록을 피하는 방법은 무엇입니까?
테이블 @Rates를 Available_Count 필드로 업데이트합니다.
하지만 GROUP BY 때문에 결과가 중복됩니다.
어떻게 업데이트합니까?
SET NOCOUNT ON DECLARE @Products TABLE (product_id VarChar(50),product_name VarChar(50))
INSERT INTO @Products Values ('1','Pen');
INSERT INTO @Products Values ('2','Pencil');
INSERT INTO @Products Values ('3','ASchool Bag');
INSERT INTO @Products Values ('4','Book');
INSERT INTO @Products Values ('5','Pencil Box');
SET NOCOUNT ON DECLARE @Rates TABLE (product_id VarChar(50),price int, Avail_Count VarChar(50))
INSERT INTO @Rates Values ('1','10','1');
INSERT INTO @Rates Values ('3','5','5');
INSERT INTO @Rates Values ('1','5','6');
INSERT INTO @Rates Values ('4','20','3');
INSERT INTO @Rates Values ('4','15','2');
INSERT INTO @Rates Values ('5','30','1');
;WITH CTE AS (
SELECT
count(*) over() Total_Record,
p.product_id, p.product_name, ISNULL(MIN(r.price), 0) AS MinPrice,
case when ISNULL(MIN(r.price), 0) > 0 then 1 else 0 end as sortOrder,
R.Avail_Count
FROM
@Products p LEFT OUTER JOIN @Rates r
ON
r.product_id = p.product_id
GROUP BY
p.product_id, p.product_name,R.Avail_Count
),ROWNUM as (Select *,ROW_NUMBER() OVER (ORDER BY sortOrder desc, MinPrice asc,Product_name)
AS RowNumber from CTE)
Select * from ROWNUM
MinPrice에 해당하는 "available_Count"를 표시하는 방법 – user475464
죄송합니다, 샘플 데이터를 기준으로 원하는 결과를 표시하십시오. 아무도 단어 문제를 해결하고 싶지 않습니다. –