2012-07-04 2 views
-4

누군가가 내가 그것을 할 수있는 것을 잘 모릅니다, 난 내 코드를 실행하면 메신저에 구문 오류가 발생,이 날 도와 줄래 .. 사전에 감사잘못된 구문 '. '

SqlCommand scGetPostings = new SqlCommand ("SELECT D1.dr,D1.cr,d1.asset_no ,(open_bal+dr-cr) as closing_balance FROM" + 
"(SELECT COALESCE(SUM(dr_amount),0) as dr, COALESCE(SUM(cr_amount),0) as cr,invasset.asset_no FROM posting,sysasset,invasset" + 
"WHERE posting.asset_no = invasset.asset_no AND posting.asset_no = @AssetNo, AND period >= asset_open_per GROUP BY invasset.asset_no)" + 
"as D1,asset", DataAccess.AConnection); 
+0

AND posting.asset_no = @AssetNo 후 한번에 제거 및 SQL 관리자에 복사 오류가 어디 있는지 ... 그것은으로'... – Kek

+1

당신을 말해야하기 D1, asset'이 어쩌면'as D1.asset'이어야합니다. –

+1

AND 문 – stuartd

답변

1

문제는 where 절에서와 같이 예상된다 때문입니다. 이처럼 :

WHERE posting.asset_no = invasset.asset_no AND posting.asset_no = @AssetNo AND period >= asset_open_per 
2

의 끝 부분에 약간의 공간을 추가하여 라인, 그렇지 않으면이는 연결의 결과입니다

FROM(SELECT 
invassetWHERE posting.asset_no 

...

UPDATE : 실제 오류가 WHERE posting.asset_no <에서 오는 -이 점.

WHERE posting.asset_no = invasset.asset_no AND posting.asset_no = @AssetNo, AND period >= asset_open_per 

쉼표를 제거하고 작동합니다 : 절을 구문 분석되지 않으며, posting.asset_no는 테이블 이름

+0

공백은 여기서 구문 적으로 필요하지 않습니다. 'select c from (select as c) t'는 잘 동작합니다. –

+0

@MS - 예, 작동합니다. 예를 들어 추가했습니다. 그러나 다음 줄은 작동하지 않습니다. – Tisho

+0

동의. 조인 조건이 맞는지 확실하지 않습니다. 그리고 '자산으로 D1'이 무엇인지 알고있는 사람은 ... –

1
SqlCommand scGetPostings = new SqlCommand ("SELECT D1.dr,D1.cr,d1.asset_no ,(open_bal+dr-cr) as closing_balance FROM " + 
"(SELECT COALESCE(SUM(dr_amount),0) as dr, COALESCE(SUM(cr_amount),0) as cr,invasset.asset_no FROM posting,sysasset,invasset" + 
" WHERE posting.asset_no = invasset.asset_no AND posting.asset_no = @AssetNo AND period >= asset_open_per GROUP BY invasset.asset_no)" + 
"AS D1,asset", DataAccess.AConnection); 
+0

변경 내용과 이유를 설명 할 수 있습니까? 코드 만의 대답은 그다지 좋은 설명이 아닙니다. – David

1

문자열 조각의 끝 부분에 공간을 추가! 대신

"(SELECT ...,sysasset,invasset" + 
"WHERE ... invasset.asset_no)" 
1

"(SELECT ...,sysasset,invasset " + 
"WHERE ... invasset.asset_no)" 

,