我試圖從在Visual Studio中的tableadapter中作爲SQL語句創建的子查詢中獲取結果。該項目鏈接到一個oracle數據庫。我最初嘗試使用「with」子句,該子句在Oracle中正常工作,但不如Visual Studio中的SQL查詢。當我使用「with」子句時,錯誤表示「無法解析查詢」。沒有「with」子句,我得到了前兩個查詢(查詢1和查詢2)在tableadapter中一起正常工作,但是當我添加主查詢時,出現錯誤「SELECT」無法識別。僅供參考:我也嘗試使用數據集將連接到的存儲過程,但無法在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')
謝謝mathguy,但我認爲那就是我已經擁有的。 – Raspberry
@覆盆子 - 我不確定你的意思。你已經有三個不同的查詢。我所展示的是一個單一的查詢。我建議的是:以查詢語句3.查找它的'FROM'子句,它表示'FROM sss,ppp'。現在複製查詢1的全文,將其粘貼在'FROM'和'sss'之間,並放在括號內。這樣它就變成了子查詢或「內聯視圖」而不是CTE(在「WITH」子句中)。對查詢2的全文做同樣的事情:複製它,將其粘貼在'sss,'和'ppp'之間,並將它括在括號中。 – mathguy
哦,我明白了!對不起@mathguy的誤解。感謝您的輸入!我會試一試。 :-)。 – Raspberry