2013-03-28 1 views
1
SELECT 
    ij.IJITEM AS Part, 
    ij.IJLOC AS Location, 
    ib.IFQOH AS QOH, 
    MAX(ij.IJDATE) AS Inv_Date 
FROM 
    dbo.S2K_IJALL ij 
    LEFT OUTER JOIN dbo.S2K_IB ib 
    ON ib.IFITEM = ij.IJITEM AND ib.IFLOC = ij.IJLOC 
WHERE 
    IJITEM LIKE '%-IC' 
AND 
    IJRBAL < 0 
GROUP BY 
    ij.IJITEM, 
    ij.IJLOC, 
    ib.IFQOH 

위의 쿼리에 필드를 추가해야합니다. 내가 할 때 MAX 날짜 필드가 유지되지 않습니다. 추가 된 필드에 값이있는 모든 레코드를 가져옵니다. MAX 날짜에 해당 필드의 값을 다시 가져올 수 있습니까?MAX 날짜 그룹화가 부적절합니다.

+1

어떤 SQL Server 버전을 사용하고 있습니까? –

+0

SQL Server 2012 – tsqln00b

답변

0

사실 MAX (IJDATE) 인 IJDate = Inv_Date뿐 아니라 키 필드의 새 필드를 포함하는 테이블에 위 쿼리를 결합하십시오. 새 필드뿐만 아니라 첫 번째 쿼리의 모든 필드를 선택하십시오.

+0

동점이 있으면 어떻게됩니까? –

+0

넥타이 처리 방법을 잘 모르겠습니다. SELECT에 추가해야 할 필드는 IJRBAL입니다. 나는 그 분야에서 가장 최근의 가치가 필요합니다. – tsqln00b

0

당신은 추가 할 더 많은 열이있는 경우와 GROUP BY, 당신은 하위 쿼리 사용하는 쿼리를 변경할 수있는 경우 결과는 터져 가져옵니다 SQL Server 2005 또는 최신 (항상 지정하십시오 가정

select ij.IJITEM AS Part, 
    ij.IJLOC AS Location, 
    ib.IFQOH AS QOH, 
    ij2.ijdate Inv_date, 
    --- add other columns 
from dbo.S2K_IJALL ij1 
inner join 
(
    select MAX(IJDATE) ijdate, IJITEM, IJLOC 
    from dbo.S2K_IJALL 
    WHERE IJITEM LIKE '%-IC' 
    AND IJRBAL < 0 
    group by IJITEM, IJLOC 
) ij2 
    on ij1.ijdate = ij2.ijdate 
    and ij1.IJITEM = ij2.IJITEM 
    and ij1.IJLOC = ij2.IJLOC 
LEFT OUTER JOIN dbo.S2K_IB ib 
    ON ib.IFITEM = ij1.IJITEM 
    AND ib.IFLOC = ij1.IJLOC 
WHERE ij1.IJITEM LIKE '%-IC' 
    AND ij1.IJRBAL < 0 
0

을 버전) :!

;WITH x AS 
(
    SELECT 
    ij.IJITEM AS Part, 
    ij.IJLOC AS Location, 
    ib.IFQOH AS QOH, 

    -- any other non-grouping column(s) can go here, 

    ij.IJDATE AS Inv_date, 
    rn = ROW_NUMBER() OVER (PARTITION BY 
     ij.IJITEM, ij.IJLOC, ib.IFQOH ORDER BY ij.IJDATE DESC) 
    FROM 
    dbo.S2K_IJALL ij 
    LEFT OUTER JOIN dbo.S2K_IB ib 
    ON ib.IFITEM = ij.IJITEM AND ib.IFLOC = ij.IJLOC 
    WHERE IJITEM LIKE '%-IC' 
    AND IJRBAL < 0 
) 
SELECT Part, Location, QOH, Inv_date 
    FROM x WHERE rn = 1; 

당신은 같은 그룹과 같은 최대 (날짜)에 있지만 열에 대해 다른 값 (여러 행이 될 수있다, 당신은 관계를 처리하는 방법을 우리에게 얘기를해야합니다의)을 추가하려고합니다.