2014-12-05 43 views
0

對不起,模糊的標題,但我真的不知道它叫什麼,我正在尋找。分組通過在Oracle中選定的變量SQL

我有幾個表格,這些表格不一定非常適合報告,您猜對了,我想報告。我對SQL也只是新手而已,這讓事情變得複雜一些。

Table1: 

ID   Created  EventName 
1   1/1/14  Event1 
2   1/1/14  Event1 
3   2/1/14  Event1 
4   2/1/14  Event2 
5   3/1/14  Event3 

Table2: 

EventID  EventType Value 
1   Var1   123 
1   Var2   XYZ 
1   Var3   ABC321 
2   Var1   987 
2   Var4   Dumbledore 
2   Var2   WXY 
2   Var6   Hamburger 
3   Var1   456 

我已經想通了,如果我使用下面的SQL ...

SELECT T1.EventName, 
    Count 
    ((Select T2.Value 
    From Table2.T2 
    Where T1.ID = T2.EventID 
    And T2.EventType = 'Var2' 
)) as Var2Count 

From Table1 T1 

Group By T1.EventName 

我應該得到這樣的輸出:

EventName Var2Count 
Event1  1 
Event2  1 

但是,我熱衷在獲得以下輸出:

EventName Var2Name 
Event1  XYZ 
Event2  WXY 

我知道w這是關於如何構造Group By的,以及在最後一個From語句之後定義Var2Name變量的事情,但我有點遺漏了如何做到這一點。

..........

好吧,我已經想通,這更接近我想要什麼,但還是有問題:我肯定需要做一個

謝謝加入......但我認爲我的功能的下一步成爲一個問題!

我有現在這樣:

select Table1.EventName, Table2.Value, 

    count 
    ((select Table2.Value 
    from Table2 
    where Table1.ID = Table2.EventID 
    and Table2.EventType in ('Var2') 
)) as LineCount, 

    sum 
    ((select Table2.Value 
    from Table2 
    where Table1.ID = Table2.EventID 
    and Table2.EventType = 'Var7' 
    and Table2.Value not like '%undefined%' 
)) as TotalCost 

from Table1 
inner join Table2 
on Table1.ID = Table2.EventID 

where Table2.EventType in ('Var2','Var7') 

Group By Table1.EventName, Table2.Value; 

我只是不知道我怎麼會各個組合Table.Value的添加新的一列...

輸出會像如下:

EventName Var1Name Var2Name  Var3Name  Var4Name (etc) 
Event1  123   XYZ   ABC321  (null) 
Event2  678   LKT   (null)  765AWW 
Event3  (null)  (null)  DERP   STUFF 

任何想法?

回答

1

我想你想一個join,而不是聚集:

select t1.EventName, t2.Value 
from table2 t2 join 
    table1 t1 
    on t2.EventId = t1.id 
where t2.EventType = 'Var2'; 
+0

謝謝,我一定需要做一個加入...但我覺得我的函數的下一步成爲一個問題! – PuGZoR 2014-12-05 03:03:48