CTE ile bir sorgum var. CTE, belirli bir tarih aralığındaki birkaç tablodan veri çeker. Yapmak istediğim, bir veri aralığına sahip CTE'den bir kez seçim yapmak, daha sonra bunu ikinci bir tarih aralığına sahip CTE'ye ikinci bir çağrıya katılmaktır. Benim problemim, tarihlerin CTE'ye nasıl geçeceğini anlayamıyorum. Pyodbc kullanıyorum, iSeries OS400 makineyle konuşuyordum. MSSQL veritabanında olabildiğince değişkenler veya çoklu ifadeler kullanamıyorum. Bu, şimdiye kadar bulabildiğim tek çözüm.Tek sorguda geçiş değerleri CTE'ye mi?
Bulunduğum girişimi şöyle görünür:
WITH salesQuery AS (
SELECT
items.imvnno AS itemNumber,
sum(historyTable.obqtsh) AS quantityShipped,
sum(historyTable.obaslp) AS sales,
obivdt AS actualDate,
obivdt AS startDate,
obivdt AS endDate
FROM aplus60fad.hsde3 historyTable
INNER JOIN aplus60fad.itmst items ON obitno = imitno
WHERE obcono = 1
AND obcsno = '[ID]'
AND actualDate BETWEEN startDate AND endDate
GROUP BY imvnno
)
SELECT
salesQuery_2014.itemNumber as itemNumber_2014,
salesQuery_2014.quantityShipped as quantityShipped_2014,
salesQuery_2014.sales as sales_2014,
salesQuery_2015.itemNumber as itemNumber_2015,
salesQuery_2015.quantityShipped as quantityShipped_2015,
salesQuery_2015.sales as sales_2015
FROM salesQuery salesQuery_2014
JOIN salesQuery salesQuery_2015 on salesQuery_2014.itemNumber = salesQuery_2015.itemNumber
WHERE salesQuery_2014.startDate = '111201'
AND salesQuery_2014.endDate = '141231'
AND salesQuery_2015.startDate = '141201'
AND salesQuery_2015.endDate = '150404';
ben "ACTUALDATE" Belirtilen tablolarda bulunmazsa bir hata alıyorum. Ne olduğundan emin değilim, çünkü, "actualDate" (hata tüm kapaklara yerleştirir, çünkü) CTE'de belirttiğim bir sütun tanımlayıcısıdır. CTE'nin altındaki sorgudan görebileceğiniz gibi iki tarih aralığı geçmek istiyorum, ancak bunu nasıl yapacağımı bilmiyorum. Yine, Pyodbc aracılığıyla bir IBM iSeries. Şimdiden teşekkürler.
sen cant kullanmak takma adları nerede fıkra, alan (obivdt) kullanımı neme ... –