2013-11-24 3 views
1

제품이 Sales.SalesOrderDetails에서 판매되는 것으로 보이는 상위 10 제품 중 하나인지 확인하고 YES 또는 NO로 설정하십시오.SQL에서 if else 문을 사용하여 하나의 테이블 열을 채우기

거기에 내가 어떻게 든 경우/다른 문을 열을 넣어 예 넣을 지금

SELECT TOP 10 p.Name , COUNT(*) 'Num of sell' FROM Sales.SalesOrderDetail SOD 
inner join Production.Product p on SOD.ProductID = p.ProductID 
GROUP BY p.Name 
ORDER BY COUNT(*) DESC 

난 모든 제품의 또 다른 테이블을 원하는 또는 아니오 :

나는 MAX이 같은 판매 TOP 10 제품을 가지고 . like :

SELECT p.Name, @someVariable FROM Production.Product p 
IF p.Name IN 
(SELECT TOP 10 p.Name , COUNT(*) 'Num of sell' FROM Sales.SalesOrderDetail SOD 
inner join Production.Product p on SOD.ProductID = p.ProductID 
GROUP BY p.Name 
ORDER BY COUNT(*) DESC) 
@someVariable = 'YES' 
ELSE @someVariable = 'NO' 

어떤 아이디어가 있습니까?

답변

3

당신은 할 수 있습니다 : @Syzmon는 감사

SELECT p.Name, 
    CASE WHEN X.ProductID IS NULL THEN 'NO' ELSE 'YES' END AS InTopTen 
FROM Production.Product p 
LEFT JOIN 
(
    SELECT TOP 10 ProductID FROM Sales.SalesOrderDetail 
    GROUP BY ProductID 
    ORDER BY COUNT(*) DESC 
) X 
ON X.ProductID = p.ProductID 
+0

, 그것은 도움이 :) 를 또한 내가 판매 orderdetail에 자사의 단가를 추가 할 경우, 내가 그렇게 할 수 있습니까? –

+1

전체 쿼리를 판매 주문 세부 정보로 다시 결합하십시오. – Szymon

관련 문제