2012-05-27 2 views
0

Access 2003에서 작성된 다음 SQL이 있습니다. SQL Server2008에서이 SQL을 실행할 때 SQL Server2008 및 오류가 발생합니다. Access의 First() 함수는 SQL Server 2008에서 인식 할 수 없습니다. SQL Server 2008에서는 TOP() 함수를 사용해 보았지만 여전히 슬 블링 할 수는 없습니다. 도와주세요.SQL Server2008에서 Access2003과 동일한 SQL을 실행하는 동안 SQL 오류가 발생합니다.

SELECT DISTINCTROW TableA.TCode,     
    TableA.DCode,     
    TableA.DepCode,     
    TableA.ShouhinCode,     
    First(TableB.TName) AS TNameFirstRecord,     
    First(TableC.LDepName) AS LDepNameFirstRecord,      
    First(TableD.ThingType) AS ThingTypeFirstRecord,     
    First(TableA.GoodsName) AS GoodsNameFirstRecord,     
    Sum(TableA.Amount) AS AmountData,     
    Sum(TableA.MoneyAmount) AS MoneyAmountData,     
    Sum(TableA.DetailedMoneyAmount) AS DetailedMoneyAmounData,      
    Sum(TableA.SummaryMoneyAmount) AS SummaryMoneyAmountData,     
    TableA.POSNo     
FROM (     
(TableA INNER JOIN TableC ON TableA.DCode = TableC.DCode)     
INNER JOIN TableB ON TableA.TCode = TableB.TCode     
)     
    INNER JOIN TableD ON TableA.DepCode = TableD.DepCode     
GROUP BY TableA.TCode,     
    TableA.DCode,     
    TableA.DepCode,     
    TableA.ShouhinCode,     
    TableA.POSNo     
ORDER BY TableA.TCode,     
    TableA.DCode,     
    TableA.DepCode,     
    TableA.ShouhinCode      
+1

이 왜으로 구별 할 때 당신에게 그룹을 사용해야합니까 당신은 그들에 행 번호가 버전 테이블을 교체하십시오 Windowing Function

를 사용해야합니다 생각 바닥에? –

답변

0

난 당신이

SELECT TableA.TCode,     
    A.DCode,     
    A.DepCode,     
    A.ShouhinCode,     
    B.TName AS TNameFirstRecord,     
    C.LDepNamee AS LDepNameFirstRecord,      
    D.ThingType AS ThingTypeFirstRecord,     
    A.GoodsNameAS GoodsNameFirstRecord,     
    Sum(A.Amount) AS AmountData,     
    Sum(A.MoneyAmount) AS MoneyAmountData,     
    Sum(A.DetailedMoneyAmount) AS DetailedMoneyAmounData,      
    Sum(A.SummaryMoneyAmount) AS SummaryMoneyAmountData,     
    A.POSNo     
FROM 
    INNER JOIN (select row_number() over (partition by object_id ORDER BY Name DESC) as RowNumber, * from TableA) A     
    INNER JOIN (select row_number() over (partition by object_id ORDER BY Name DESC) as RowNumber, * from TableC) C ON A.DCode = C.DCode     
    INNER JOIN (select row_number() over (partition by object_id ORDER BY Name DESC) as RowNumber, * from TableB) B ON A.TCode = B.TCode     
    INNER JOIN (select row_number() over (partition by object_id ORDER BY Name DESC) as RowNumber, * from TableD) D ON A.DepCode = D.DepCode  

WHERE 
    A.RowNumber = 1 AND B.RowNumber = 1 AND C.RowNumber = 1 AND D.RowNumber = 1 

GROUP BY A.TCode,     
    A.DCode,     
    A.DepCode,     
    A.ShouhinCode,     
    A.POSNo     
ORDER BY A.TCode,     
    A.DCode,     
    A.DepCode,     
    A.ShouhinCode  
+0

실례합니다. 저에게 가르쳐 준 답변으로 달릴 때 오류가 발생합니다. INNER JOIN 성명서. 다시 가르쳐 주실 수 있습니까? – khinlai

+0

오류가 무엇인지 저희에게 알려 주시기 바랍니다 - 메시지에 whol 오류를 복사하십시오 –

+0

오류 메시지는 다음과 같습니다 1. 'C'근처의 '내부'키워드, 잘못된 진술 근처의 잘못된 진술 'B'근처의 잘못된 진술, D ' – khinlai

관련 문제