0

3 조회합니다. 프로젝트는 오라클 데이터베이스에 연결됩니다. 원래 오라클에서는 잘 작동하는 "with"절을 사용하려고했지만 Visual Studio에서는 SQL 쿼리가 아닙니다. "with"절을 사용하면 오류가 "쿼리를 구문 분석 할 수 없음"이라고 표시됩니다. 은 "와"절없이 나는 TableAdapter가에서 잘 협력하는 최초의 두 개의 질의 (쿼리 1과 쿼리 2)를 가지고,하지만 난 메인 쿼리를 추가 할 때, 나는 오류가 인식되지 않는 'SELECT'얻을. 참고 : 나는 또한 데이터 집합에 연결하는 것이지만, 오히려 저장 프로 시저보다는 SQL 문을 사용하여이 작업을 수행 할 수 바라고 있어요 지금, 그래서 비주얼 스튜디오 측에서 작동하지 않을 저장 프로 시저를 사용하여 시도했다. 어떤 도움을 주셔서 감사합니다.나는 Visual Studio에서 TableAdapter 등의 SQL 문으로 생성 된 하위 쿼리의 결과를 얻으려고

--- Query 1 --- 

SELECT * from (select 
    ss.startdate 
,ss.enddate 
,s.segid 
,s.segno 
,s.stats 
,sp.spo 
,p.pro 
FROM 
Spon ss 
,Segs s 
,pro p 
,spo sp 
WHERE 
and  ss.segid =  s.segid 
and  ss.spoid =  sp.spoid 
and  p.proid =  sp.proid    
and  ss.startdate <=  (par_date1) 
and  ss.enddate  >=  (par_date2) 
) sss, 

    --- Query 2 --- 

(
SELECT 
    p.pickid 
    ,p.segid 
    ,p.spid 
    ,p.pickdate 
    ,p.pickqty 
FROM  picks p 
WHERE 
     (P.Pickdate is null or P.Pickdate between (par_date1) and ((par_date2)) ) 
) ppp 

    --- Query 3 (MAIN Query - Queries data pulled from Query 1 and Query 2) --- 

SELECT 
    sss.shipid 
,sss.segno 
,To_Char(sss.StartDate, 'DD-MON-YYYY') As StartDate 
,To_Char(sss.EndDate, 'DD-MON-YYYY') As EndDate 
,sss.Spo 
,sss.Pro 
,To_Char(ppp.PickDate, 'DD-MON-YYYY') As PickDate 
,To_Char(Max(ppp.PickDate), 'DD-MON-YYYY') As LastPick 
,Round(SUM(ppp.PickQty/(Count(distinct sss.spid)) ,2) As Avrg 
,Count(sss.spid) As TtlPicks 
,sum(ppp.PickQty) As Ttls 
    FROM sss, ppp 
    WHERE 
     ppp.spid(+)  =  sss.spid 
    GROUP BY 
sss.shipid 
,sss.segno 
,sss.Spo 
,sss.Pro 
,To_Char(sss.StartDate, 'DD-MON-YYYY') 
,To_Char(sss.EndDate, 'DD-MON-YYYY') 
,To_Char(ppp.PickDate, 'DD-MON-YYYY') 

답변

0

주 (외부) 쿼리의 FROM 절을 찾습니다 FROM sss, ppp placeholder_1 전체 텍스트 쿼리 # 1 placeholder_2의 전체 텍스트로 대체해야

FROM (placeholder_1) sss, 
    (placeholder_2) ppp 

로 교체 검색어 # 2의

외부 쿼리에 ANSI 표준 구문을 사용하는 것이 좋습니다. GROUP BY에서는 trunc(sss.startdate) 및 그 외의 다른 날짜로 그룹화하면 시간을 절약 할 수 있습니다. 그 효과는 동일합니다.

행운을 빈다.

+0

은 mathguy 주셔서 감사합니다,하지만 난 그게 내가 이미 가지고있는 생각합니다. – Raspberry

+0

@ 라스베리 - 무슨 뜻인지 잘 모르겠습니다. 이미 가지고있는 것은 세 가지 질의어입니다. 내가 보여주는 것은 단일 쿼리입니다. 필자가 제안한 것은 : Query 3을 가져라. 'FROM sss, ppp'가있는'FROM' 절을 찾는다. 이제 귀하의 검색어 1 전체 텍스트를 복사하여 'FROM'과'sss' 사이에 붙여 넣은 다음 괄호 안에 넣으십시오. 이 방법은 (WITH 절에있는) CTE 대신 하위 쿼리 또는 "인라인 뷰"가됩니다. 질의 2의 전체 텍스트에서 똑같은 작업을하십시오 : 복사하여'sss '와'ppp' 사이에 붙여넣고 괄호 안에 넣으십시오. – mathguy

+0

아하이오! @mathguy에 대한 오해를 드려서 죄송합니다. 귀하의 의견을 보내 주셔서 감사합니다! 나는 그것을 시도 할 것이다. :-). – Raspberry