2014-09-08 4 views
0

마지막으로 발생한 작업 번호에 값을 나열 할 수 있습니까?SQL Server : 마지막 항목의 값만 표시 쿼리

Google 데이터베이스에는 숫자가있는 작업이있는 주문이 보관됩니다. 예 : OrderNo-0011. 0011이 작업 표시입니다.

작업 당 더 많은 작업을 수행 할 수 있지만 사용 된 재료를 나열하려고합니다. 재료를 보관하는 테이블에 가입 할 때 작업 번호가있는 모든 줄에 사용량이 표시됩니다 . 마지막 또는 처음 만 채워지고 나머지는 NULL 또는 비어 있어야합니다. 지금 무슨 일

예 :

JobNo   Task  Material Starttime Endtime Operator 
----------------------------------------------------------------------- 
122070-0011 Set-Up  4   DateTime Datetime Willy Wonka 
122070-0011 Production 4   DateTime Datetime Willy Wonka 
122070-0011 Waste  4   DateTime Datetime Willy Wonka 
122070-0011 Cleanup  4   DateTime Datetime Willy Wonka 

그것은 마지막 또는 첫 번째 레코드에 금액을 표시해야합니다 : 사전에

JobNo   Task  Material Starttime Endtime Operator 
----------------------------------------------------------------------- 
122070-0011 Set-Up  NULL  DateTime Datetime Willy Wonka 
122070-0011 Production NULL  DateTime Datetime Willy Wonka 
122070-0011 Waste  NULL  DateTime Datetime Willy Wonka 
122070-0011 Cleanup  4   DateTime Datetime Willy Wonka 

감사합니다.

답변

0

물론 CASE 문과 ROW_NUMBER 함수를 사용할 수 있습니다 (SQL Server 2008 이상을 사용한다고 가정).

예 :

SELECT 
    JobNo, Task, 
    CASE WHEN ROW_NUMBER() OVER (PARTITION BY JobNo ORDER BY StartTime DESC) = 1 
     THEN Material 
     ELSE NULL END AS Material, 
    Starttime, 
    Endtime, 
    Operator 
FROM 
    MyTable 
ORDER BY JobNo, Starttime 

내가 말을해야

, 나는 꽤 값을 볼 수 없습니다 (ASC에 절을 통해 ROW_NUMBER에 의해 순서를 교환은 첫 번째 항목에 그것을 얻을 것이다) 이 일을하지만, 이봐, 그건 질문이 아니었다 :)

+0

고마워! 이것은 나를위한 트릭을 않습니다. 그것은 보고서에서 다양한 가치를 계산하는 데 필요한 자료가 필요한 곳에 가치로 사용됩니다. – Ignotus