2010-03-07 3 views
0

다음 코드를 실행 한 후 'select'키워드 근처에 잘못된 구문이 표시됩니다.쿼리를 실행하는 동안 'select'키워드 근처의 구문이 잘못되었습니다.

declare @c int 

SELECT @c = COUNT(*) 
    FROM (select id, max(date_stored) 
     from table B 
    INNER JOIN table P ON B.id = P.id 
     where id = 3) 

select @c 

데이터베이스에 최대 저장된 날짜가있는 레코드의 총 개수를 선택하고 싶습니다. 하나는 PLZ, 나 또한 잘못된

+0

그것은 패배 카운트 경우 장난감이 하위 쿼리에서 최대로하고 그룹을하고있는 이유를 이해하지 않는 하위 쿼리를

declare @c int SELECT @c = COUNT(*) FROM ( select id, max(date_stored) from table B INNER JOIN table P ON B.id = P.id where id = 3 ) x --alias select @c 

별칭을 할 필요가 테이블 별칭의 용도는 일관되게 사용하지 않는 경우입니다. 지정하지 않으면 "양쪽 참조 테이블에 열이 있음을 확인하는"모호한 열 참조 "오류가 발생하기 때문에 어느 테이블에서 오는 'id'값입니다. –

답변

0
declare @c int 
SELECT @c = COUNT(aName.[ID]) FROM 
(
    select [B.id], max(B.date_stored) 
    from table B 
    INNER JOIN table P ON B.id = P.id 
    where B.id = 3 
    -- group by [id] ??? 
) aName 

select @c 
+0

max (B.date_stored)를 MaxDate로 정의하여 문제를 해결했습니다. – sam

0
SET @C = SELECT COUNT(*) FROM ... 

를하고있는 중이 야 무엇을 말할 수 당신이 그 내부 SELECT에서 GROUP BY을 어떻게해야합니까? "max()"호출이 의미하는 바는 무엇입니까? 어떤 테이블이 "date_stored"필드에 있습니까? 먼저 내부 쿼리를 처리 한 다음 카운트를 얻는쪽으로 이동해야한다고 생각합니다.

날짜 값이 지정된 "id"값의 모든 최신 날짜 값과 같은 레코드를 계산하려는 경우 SQL Server 2005에있는 값이없는 한 해당 값을 명시 적으로 만들어야합니다. 내가 모르는 몇 가지 깔끔한 새로운 기능).

+0

코드를 사용해 보셨습니까? –

+0

각 id에 둘 이상의 행이 있다고 가정 할 때 max (date_stored)가 주어진 id의 최신 date_stored 만 계산하는 데 사용됩니다. date_stored는 표 b에 있습니다. 또한 테이블 별칭을 사용하면 조인 할 때 참조하는 열을 식별해야합니다. –

+0

@ 예 @ 예 각 ID에는 날짜에 대한 더 많은 열이 있습니다. 그래서 최대 날짜 열을 얻고 싶습니다. 하지만 여전히 작동하지 않습니다 ... 별칭을 정의한 후 'aName'열 2에 대해 No 열이 지정되었습니다. – sam

1

당신은 아직도 당신이 필요로하는 모든

+0

왜 하위 쿼리를 별명을 지정해야합니까 ?? – Pointy

+0

@Pointy : 이것이 TSQL이 작동하는 방식이며 왜 오류가 발생했기 때문입니다. – Hogan

+0

첫 번째 선택 항목의 시작 부분에 별칭이 필요함 –

관련 문제