SQL - Использование третьего запроса для сравнения результатов двух предыдущих - PullRequest
0 голосов
/ 17 февраля 2012

В моей базе данных есть два запроса, которые возвращают итоги из разных таблиц. Затем я выполняю третий запрос для сравнения этих итогов?

Мне нужно выполнить это в едином отчете, чтобы я мог публиковать на своем сайте asp.net. можно ли объединить эти запросы?

Ниже приведены три запроса

qry_control_d_total

SELECT 
  tbl_control_d.processed_date, 
  Sum(tbl_control_d.dc_amt) 
AS 
  SumOfdc_amt, 
  tbl_currency.cur_type
FROM 
  tbl_control_d 
INNER JOIN 
  tbl_currency 
ON 
  tbl_control_d.cur_code = tbl_currency.cur_code
GROUP BY 
  tbl_control_d.processed_date, tbl_currency.cur_type
AS 
  qry_control_d_total;

qry_sap_total

SELECT 
   tbl_sap.doc_date, 
Sum
   (tbl_sap.dc_amt) 
AS 
   SumOfdc_amt, 
   tbl_sap.cur_type
FROM 
   tbl_sap
GROUP BY 
   tbl_sap.doc_date, 
   tbl_sap.cur_type
AS 
   qry_sap_total;

окончательный запрос

SELECT 
   qry_control_d_total.processed_date, 
   qry_control_d_total.cur_type, 
   [qry_control_d_total].[sumofdc_amt]-[qry_control_d_total].[sumofdc_amt] 
AS 
   balance, 
   qry_control_d_total.SumOfdc_amt, 
   qry_sap_total.SumOfdc_amt
FROM 
   qry_control_d_total 
INNER JOIN 
   qry_sap_total 
ON 
   (qry_control_d_total.processed_date = qry_sap_total.doc_date) 
AND 
   (qry_control_d_total.cur_type = qry_sap_total.cur_type);

любые предложения приветствуются


это субмарина, которую я использую на своей странице vb.net

sub page_load
    lblyear.text = dateTime.Now.ToString("yyyy")
    Dim objconn as new oledbconnection("provider=Microsoft.jet.oledb.4.0;data source=F:\CCMI\asp\db\control.mdb")
    Dim objcmd As Oledbcommand
    Dim objRdr as OledbDatareader
    Dim strCmd as string
    Dim objDA as oleDbDataAdapter
    if not ispostback then
        '****************
        objcmd = new oledbcommand("SELECT...", objconn)
                objconn.open()
                objRdr = objcmd.executereader()
                dgbal_mc_roi.datasource = objrdr
                dgbal_mc_roi.databind()
                objrdr.close()
                objconn.close()
    end if
end sub

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

Попробуйте сделать одну вещь

Если вы выполняете эти запросы в хранимой процедуре,

переносит результаты первого запроса во временную таблицу, а результаты второй таблицы - в другую.временная таблица

написать запрос на объединение для этих двух временных таблиц!

0 голосов
/ 17 февраля 2012

Вы почти у цели, вам нужно использовать ваши предыдущие запросы в качестве производных таблиц:

SELECT 
   qry_control_d_total.processed_date, 
   qry_control_d_total.cur_type, 
   qry_control_d_total.[sumofdc_amt]-qry_control_d_total.[sumofdc_amt] 
AS 
   balance, 
   qry_control_d_total.SumOfdc_amt, 
   qry_sap_total.SumOfdc_amt
FROM (  SELECT tbl_control_d.processed_date, Sum(tbl_control_d.dc_amt) AS SumOfdc_amt, tbl_currency.cur_type
        FROM tbl_control_d 
        INNER JOIN tbl_currency 
        ON tbl_control_d.cur_code = tbl_currency.cur_code
        GROUP BY tbl_control_d.processed_date, tbl_currency.cur_type) AS qry_control_d_total 
INNER JOIN (SELECT tbl_sap.doc_date, Sum(tbl_sap.dc_amt) AS SumOfdc_amt, tbl_sap.cur_type
            FROM tbl_sap
            GROUP BY tbl_sap.doc_date, tbl_sap.cur_type) AS qry_sap_total 
ON qry_control_d_total.processed_date = qry_sap_total.doc_date
AND qry_control_d_total.cur_type = qry_sap_total.cur_type
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...