0

Visual StudioのテーブルアダプタでSQL文として作成されたサブクエリから結果を取得しようとしています。プロジェクトはOracleデータベースにリンクされています。私はもともと、Oracleでうまく動作する「with」節を使用しようとしていましたが、Visual StudioのSQL問合せとはそれほど違いはありません。 "with"句を使用すると、エラーが "クエリを解析できません"と表示されました。 "with"句がないと、最初の2つのクエリ(クエリ1とクエリ2)がテーブルアダプターでうまく機能するようになりましたが、メインクエリを追加するとエラー 'SELECT'が認識されません。 FYI:データセットが接続するがVisual Studio側では動作しないストアドプロシージャを使用しようとしました。今のところ、ストアドプロシージャではなくSQLステートメントでこれを実現したいと考えています。どんな助けもありがとうございます。Visual Studio 3のクエリでCTEを使用する

--- 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

ありがとう、私はすでに持っているものだと思います。 – Raspberry

+0

@ラズベリー - あなたは何を意味するのか分かりません。既に持っているのは3つの異なるクエリです。私が示すのは、1つのクエリです。私が提案したのは:クエリー3を取ることです。 'FROM sss、ppp'と言う' FROM'節を探します。今度は、あなたのクエリの全文をコピーし、1つを「FROM」と「sss」の間に貼り付けてかっこに入れます。このようにすると、CTEではなく(WITH'句で)サブクエリまたは「インラインビュー」になります。クエリ2の全文で同じことをやってください:それをコピーし、 'sss 'と' ppp'の間に貼り付けてかっこで囲みます。 – mathguy

+0

ああ私は見る! @mathguyの誤解をおかけして申し訳ありません。あなたのご意見ありがとうございます!私はそれを試してみましょう。 :-) – Raspberry

関連する問題