2012-09-05 137 views
1

這裏是3個查詢重要的是,所有這三個查詢都基於日期範圍,並且需要將qry 1 assestnumber與snissued和snredeemed進行匹配。由於事先將3個SQL查詢加入到一個結果集中

select 
    assetnumber, sum(mocalc),sum(micalc), sum(cocalc),sum(cicalc) 
from 
    drops 
where 
    dropdate > '09/01/2012' 
    and dropdate < dateadd(hour,-0,getdate()) 
group by 
    assetnumber 

select 
    snissued,sum(amount) 
from 
    tickets 
where 
    dateissued > '09/01/2012' 
    and dateissued < dateadd(hour,-0,getdate()) 
group by 
    snissued 

select 
    snredeemed,sum(amount) 
from 
    tickets 
where 
    dateredeemed > '09/01/2012' 
    and dateredeemed < dateadd(hour,-0,getdate()) 
group by 
    snredeemed 
在第一我正在總結了4周的Fileds我使用和由assetnumber用於指定日期範圍內的分組

第二我是從量的另一個表總和拉動爲snissued日期範圍 第三我是從用於前面snredeemed日期範圍

量的另一個表總和拉動爲輸出我想的第一個表,然後2個colums snissued(總和量)和snredeemed(總和量)

在這裏是電流輸出

qry 1 
0-2459-36182 843 869 14 40 
0-2621-31924 64700 86900 3000 25200 
0-2739-41401 5702 5738 204 236 

QRY 2

0-2459-36182 162800 
0-2621-31924 145000 
0-2739-41401 298200 

QRY 3

0-2459-36182 157200 
0-2621-31924 157800 
0-2739-41401 292800 

這是結果我想

0-2459-36182 843  869  14  40  162800 157200 
0-2621-31924 64700 86900 3000 25200 145000 157800 
0-2739-41401 5702 5738 204  236 298200 292800 
+1

你試過UNION運算符嗎?請添加您正在面臨的錯誤以及SQL命令 – Chris

回答

0

從我收集的內容來看,你並不是像其他人一樣尋找聯盟,而是需要3行有2個額外的列,每個assetnumber顯示snissdeed和snredeemed。那是對的嗎? 如果這樣做了左連接上的所有3此類似:

select DRPS.assetnumber, DRPS.MOCALCSUM,DRPS.MICALCSUM, 
    DRPS.COCALCSUM,DRPS.CICALCSUM,ISSUED.TotalIssued,REDEEMED.TotalRedeemed 
from (select assetnumber, sum(mocalc) AS [MOCALCSUM],sum(micalc) AS [MICALCSUM], 
     sum(cocalc) AS [COCALCSUM],sum(cicalc) AS [CICALCSUM] 
     from drops 
     where dropdate > '09/01/2012' and dropdate < dateadd(hour,-0,getdate()) 
     group by assetnumber) AS DRPS 
LEFT JOIN (select snissued,sum(amount) AS [TotalIssued] from tickets 
    where dateissued > '09/01/2012' and dateissued < dateadd(hour,-0,getdate()) 
    group by snissued) AS ISSUED 
    ON DRPS.assetnumber=ISSUED.snissued 
LEFT JOIN (select snredeemed,sum(amount) AS [TotalRedeemed] from tickets 
    where dateredeemed > '09/01/2012' and dateredeemed < dateadd(hour,-0,getdate()) 
    group by snredeemed) AS REDEEMED 
    ON DRPS.assetnumber=REDEEMED.snredeemed 

希望這是正確的!發佈任何錯誤,我會更正。

+0

消息207,級別16,狀態1,行15 無效的列名稱'snissued'。 消息207,級別16,狀態1,行1 無效的列名稱'MOCALCSCUM'。 –

+0

作爲clearyes 3行必須有2個額外的列額外的列是一個序列號snissued或snredeemed金額列的總和。 snissued –

+0

好吧我修正了2錯誤第一個錯誤應該是snredeemed沒有snissued和第二個錯誤從SCUM刪除C。到目前爲止在sql中工作將添加到我的代碼並再次測試,非常感謝 –

1
select 
    q1.*, snissuedsum, snredeemedsum 
from 
(
    select assetnumber, sum(mocalc) q11,sum(micalc) q12, sum(cocalc) q13,sum(cicalc) q14 
    from drops 
    where dropdate > '09/01/2012' 
    and dropdate < dateadd(hour,-0,getdate()) 
    group by assetnumber 
) q1 
left join 
(
    select snissued,sum(amount) snissuedsum 
    from tickets 
    where dateissued > '09/01/2012' 
    and dateissued < dateadd(hour,-0,getdate()) 
    group by snissued 
) q2 
    on q1.assetnumber = q2.snissued 
    left join 
(  
    select snredeemed,sum(amount) snredeemedsum 
    from tickets 
    where dateredeemed > '09/01/2012' 
    and dateredeemed < dateadd(hour,-0,getdate()) 
    group by snredeemed 
) q3 
    on q1.assetnumber = q3.snredeemed 
+0

Msg 8156,級別16,狀態1,行15 'q2'指定了'snissued'列多次。 消息207,級別16,狀態1,行15 無效的列名稱'assetnumber'。 消息8156,級別16,狀態1,行23 'snredeemed'列多次爲'q3'指定。 消息207,級別16,狀態1,行23 無效的列名稱'assetnumber'。 –

+0

啊,是的 - 沒有關注你的專欄名稱。請參閱編輯 – podiluska

相關問題