2016-07-22 3 views
0

사람이 쿼리 도와주세요 :돌아 다른 열이

쿼리 표와 해당 table2.orderNumber이 table1.parentOrderNumber에 해당하는 모든 table1.parentOrderNumber, table1.orderPriority, table1.orderQuantity 값을 반환하고 가장 낮은 값인 table2.operationNumber는 현재 날짜 인 -5 일보다 크거나 같고 현재 날짜 + 3 일보다 작거나 같은 table2.scheduledStartDate를가집니다.

여기서 table2에는 서로 다른 operationNumber가있는 orderNumber가 중복되어 있습니다. 나는 절 및 다른 사람을 가지고 시도했다 그러나 doesnt는 돕는 것을 보인다. 나는 지금까지 쿼리를 다음 parentOrderNumber 중복 반환 및뿐만 아니라 operationNumber의 최소 값을하는 쓴 :

SELECT 
    t1.parentOrderNumber AS parentOrderNumber 
    ,t2.scheduledStartDate AS scheduledStartDate 
    ,t1.salesOrderNumber AS salesOrderNumber 
    ,t1.salesOrderLine AS salesOrderLine 
    ,t1.orderPriority AS orderPriority 
    ,t1.orderQuantity AS orderQuantity 
    ,t1.modelNumber AS modelNumber 
    ,t2.calculatedActualLabor AS CalculatedActualLabor 
    ,MIN(t2.operationNumber) AS operationNumber 
FROM 
    table2 t2 WITH(NOLOCK) 
LEFT JOIN 
    table1 t1 WITH(NOLOCK) ON t2.orderNumber = t1.parentorderNumber 
WHERE 
    parentOrderNumber <> '' 
    AND t1.productionplant = 'xyz' 
GROUP BY 
    --t1.orderNumber 
    t1.parentOrderNumber 
    ,t2.scheduledStartDate 
    ,t1.salesOrderNumber 
    ,t1.salesOrderLine 
    ,t1.orderPriority 
    ,t1.orderQuantity 
    ,t1.modelNumber 
    ,t2.calculatedActualLabor 
+1

[나쁜 습관을 걷어차 - 모든 곳에서 NOLOCK하기] (http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/) - 모든 곳에서 이것을 사용하는 것이 권장되지 않습니다. - 그 반대입니다. ! –

+0

이 질문에 몇 가지 샘플 레코드를 추가 할 수 있습니까? 만약 당신이 우리에게 무엇을 돌려 주는지 당신이 무엇을 기대하고 있는지 보여줄 수 있다면 도움이 될 것입니다. –

+0

@marc_s 귀하의 코멘트 주셔서 감사합니다하지만이 지금 당장 도움이되지 않을까 두려워! –

답변

0

나는 다음과 같은 쿼리가 당신이 원하는 걸 얻을해야 제대로 질문을 이해 해요 경우

select * from t2 inner join 
    (select t2.ordernumber, min(t2.operationnumber) as operationnumber 
     from t2 where t2.schedulestartdate between getdate()-5 and getdate()+3 
     group by ordernumber) t2_1 
    on t2.ordernumber = t2_1.ordernumber and t2.operationnumber = t2_1.operationnumber 
    inner join t1 on t1.parentordernumber = t2.ordernumber