2011-03-18 4 views
0

C#의 SQLce (버전 3.5) 데이터베이스에서 유효 날짜별로 필터링하려고합니다.SQL CE SubSelect를 사용하여 Effective Date로 필터링

SELECT  FirstName, LastName, HomeID, ConditionID, ADate, OwnerID 
FROM   Sys_HomeOwner 
WHERE  (ADate = 
          (SELECT  MAX(ADate) AS Expr1 
           FROM   Sys_HomeOwner AS Sys_HomeOwner_1)) 

오류가 반환됩니다 : 여기 내 쿼리는 좀 질의를하고있다

There was an error parsing the query. (token line number=1, token line offset=118, token in error=SELECT]

과는 SQLCE에 부속 선택을 할 수 있습니다 보인다. subselect를 꺼내면 테이블 전체가 최대 날짜를 잡아 당기는 것처럼 실행됩니다.

내가 뭘 잘못하고 있니?

도움 주셔서 감사합니다.

답변

-1
SELECT TOP 1 FirstName, LastName, HomeID, ConditionID, ADate, OwnerID 
FROM Sys_HomeOwner 
ORDER BY ADate DESC 
+0

감사를 HomeID 싶어 가정. 여기에 내가 그것을 시도 할 때 오류가 있습니다 : 상위 조항 지원 SQLCE에서 사용할 수 없습니다 – bline22

+0

추가 생각, 최고 절만 데이터의 첫 번째 행을 반환하지? 각 행의 '최대 유효 일자 행'을 가져와 여러 행을 반환해야합니다. 어쨌든 Top이 여기에서 작동 할 것이라고 확신하지 못합니까? – bline22

+0

-1 맨 위 컴팩트 버전에서는 지원되지 않습니다. – HadleyHope

0

각 행이 최대가되는 것을 언급 했으므로 여기에 GROUP BY을 사용해야한다고 생각합니다.

방법에 대해 :

SELECT FirstName, LastName, NameID, ConditionID, ADate, OwnerID 
FROM Sys_HomeOwner h 
LEFT OUTER JOIN (SELECT MAX(ADate) AS maxdate, HomeID 
       FROM Sys_HomeOwner 
       GROUP BY HomeID) AS effectiveDates 
    ON h.HomeID = effectiveDates.HomeID 
WHERE h.ADate = effectiveDates.maxdate 

각에 대한 최신 날짜 답장을

+0

homeid를 기반으로하는 최신 날짜가 필요합니다. 오류는 다음과 같습니다. 파생 테이블 SQL 구문 또는 문은 지원되지 않습니다. 열 이름을 표로 해석 할 수 없습니다. 열이 속한 테이블을 지정하십시오. [모호한 열의 이름 = HomeID]. 나는이 오류에 대해 조사 할 것이다. 네 접근 방식이 좋아. 나는 그런 생각을하지 못했다. – bline22

+0

HomeID 앞에 테이블 별칭 또는 이름을 붙이면됩니다. 예 : Sys_HomeOwner.HomeID 또는 Expr1.HomeID – HadleyHope

+0

답장을 보내 주셔서 감사합니다. 별칭을 사용하기 전에 다음과 같이 나타납니다. 파생 테이블 SQL 구문 또는 문이 지원되지 않습니다. – bline22