2015-11-02 62 views
0

我需要幫助弄清楚如何編寫一個查詢,查詢兩個特定日期的Flow的SUM值,並從另一箇中減去一個。從另一個日期的總和中減去一個日期的流量總和?

本質上我需要找到10/30/2015流量的總和,並從2014年12月31日的流量總和中減去它以獲得YTD更改。查詢下面是迄今爲止我所擁有的。它給了我那個特定日子所需要的東西,但是現在我需要能夠運行計算以獲得年初至今。

SELECT * 
FROM (SELECT NAME, SUM(FLOWS/1000000.00) AS FLOWS 
FROM HISTORY_TBL1 
WHERE DATE = TO_DATE('10302015','MMDDYYYY') 
GROUP BY NAME 
ORDER BY FLOWS DESC) 
WHERE ROWNUM <=10 
+0

爲什麼你需要「GROUP BY NAME」部分?因爲它沒有在問題中提到.. – nabeel

+0

@nabeel它是因爲每個產品在特定日期可能有多個值,並且我需要將每個名稱的所有交易分組在一起,並且每天的總和值的結果集產品(名稱) – ace123

回答

0

可以使用條件聚合得到的兩個值和它們的區別:

SELECT NAME, 
     SUM(CASE WHEN DATE = DATE '2014-12-31' THEN FLOWS END)/1000000.00 AS FLOWS_20141231, 
     SUM(CASE WHEN DATE = DATE '2015-10-30' THEN FLOWS END)/1000000.00 AS FLOWS_20151030, 
     SUM(CASE WHEN DATE = DATE '2015-10-30' THEN FLOWS 
       WHEN DATE = DATE '2014-12-31' THEN - FLOWS 
      END)/1000000.00 AS FLOWS_DIFF, 
FROM HISTORY_TBL1 
WHERE DATE IN (DATE '2015-10-30', DATE '2014-12-31') 
GROUP BY NAME; 

我不知道你想用reults做什麼。

+0

我需要能夠計算YTD的變化。這意味着我需要將上一個營業日(2015年10月30日)的總和值減去去年(2014年12月31日)的最後一個營業日的總和。這個方程的結果是YTD變化。 – ace123

0
SELECT NAME, 
     SUM(
      CASE 
      WHEN DATE=TO_DATE('10302015','MMDDYYYY') THEN FLOWS -- the bigger number 
      WHEN DATE=TO_DATE('12312014','MMDDYYYY') THEN FLOWS * -1 -- minus the smaller number 
      ELSE 0 
      END 
     )/1000000.00 AS FLOWS_2015_minus_2014 
FROM HISTORY_TBL1 
WHERE DATE IN (TO_DATE('10302015','MMDDYYYY'), 
     TO_DATE('12312014','MMDDYYYY')) 
GROUP BY NAME; 
+0

我想你誤解了我正在看的是什麼,如果我不清楚我的問題,我很抱歉。我只是想在2015年10月30日獲得每個名字的總和,並且在2014年12月31日將每個名字的總和減去它們。我只需要能夠編寫一個查詢來完成這個簡單的計算,以便我可以避免在Excel中進行計算。 – ace123

+0

這正是這個查詢返回的計數31-DEC減去30-OCT的計數 – nabeel

+0

我跑這個查詢,它給了我一個兩列的結果集。名稱爲NAME的列中包含我的所有產品,名爲FLOWS_DEC_MINUS_OCT的列在每個產品上都給出了-1的結果集。基本上結果集根本沒有任何計算。另外我不明白爲什麼我需要計數,當我正在尋找的總和! – ace123

相關問題