2014-12-22 2 views
0

최소 중복 값을 찾기 위해 SQL 문을 사용할 수 있습니까? 이 내 SQL 문한 열에서 최소 중복되지 않는 값을 선택하는 방법은 무엇입니까?

DECLARE @currentDate DATETIME = CONVERT(VARCHAR(10), Getdate(), 120) 

UPDATE Dinfo 
SET WinnerID = result.CustomerID 
FROM Daily_Info Dinfo 
     JOIN (SELECT CO.DailyInfoID, 
        CO.CustomerID 
      FROM Customer_Offer CO 
      WHERE CO.OfferDate = @currentDate 
      GROUP BY CO.DailyInfoID, 
         CO.CustomerID 
      HAVING (Count(CO.OfferPrice) = 1)) result 
     ON Dinfo.DailyID = result.DailyInfoID 

내가 최소한의 독특한 서비스를 제공하는 내 우승자를 업데이트합니다. 어떻게 선택할 수 있습니까?

답변

0

데이터를 찾으려면 select이 필요합니다. 이에 따라 정보를 업데이트하려면

select min(offerprice) 
from (select co.*, count(*) over (partition by co.offerprice) as cnt 
     from Customer_Offer co 
     where CO.OfferDate = @currentDate 
    ) co 
where cnt = 1; 

, 다음 join 사용 : 나는 다음과 같은 쿼리가 당신이 원하는 것을 할 수 있다고 생각

update dinfo 
    set winnerId = c.CustomerId 
    from dinfo cross join 
     (select top 1 co.* 
      from (select co.*, count(*) over (partition by co.offerprice) as cnt 
       from Customer_Offer co 
       where CO.OfferDate = @currentDate 
       ) co 
      where cnt = 1 
      order by offerprice 
     ) c 

이것은 쿼리의 구조를 따르지만 그 것이다 dinfo의 모든 행을 업데이트하려고합니다. 하나의 행만 업데이트되도록 다른 조건을 원할 수 있습니다.

관련 문제