2016-08-13 79 views
0

我有一個sql查詢,但我想改進它們。報告的sql任務

customer number | amount | bill | sum1 | sum2 | date | .... (other components) 

    1001    -130  F/001  0  -70 2016-01-01 

    1001    -80  F/002 -10  0  2016-05-01 

我想要如下所示。

在報告中的金額被選爲最近日期的帳戶,但與組件SUM1和SUM2在報告

customer number | amount | sum1 | sum2 | date | .... (other components) 

    1001    -80  0  -70 2016-05-01 

    1001    -80  -10  0  2016-05-01 

此子查詢是由公司所擁有,我不能顯示它。

修正案可能看起來就像這樣

SELECT 
     customer_number, 
     amount, 
     sum1, 
     sum2, 
     date, 
     (other components) 
FROM (
     (content of the report) 
) AS raport 
WHERE .... 

我嘗試:

SELECT 
     customer_number, 
     amount, 
     sum1, 
     sum2, 
     date, 
     (other components) 
FROM (
     (content of the report) 
) AS raport 
QUALIFY ROW NUMBER() OVER (PARTITION customer_number, amount ORDER BY date DESC) = 1 

,但我沒有。

我會問一些建議。

+0

看來你想每個客戶賬戶在這種情況下SUM1,SUM2或任何其他方面需要彙總所有行的值相同的客戶一個返回的記錄賬號與否? –

+0

@AnjaniKumarAgrawal - 我可以在所需的輸出中看到同一個客戶的兩行。你是如何得出結論的:「看起來」不然? – mathguy

+0

@mathguy - 從這一行的「報表中的金額被選爲賬戶最近的日期」 –

回答

2

我不太明白您的要求,但也許即便如此,這將幫助。在原始文章中,您翻轉了日期,但沒有顯示SUM1和SUM2列中顯示的數量。這沒有意義,顯然你犯了一個錯誤,但我不知道你想要什麼。無論如何,下面的查詢使用FIRST_VALUE()分析函數,這可能是你正在尋找的。如果最後不需要ORDER BY子句,只需刪除/忽略它。

with 
    inputs (customer_number, amount, bill, sum1, sum2, dt) as (
     select 1001, -130, 'F/001', 0, -70, date '2016-01-01' from dual union all 
     select 1001, -80, 'F/002', -10, 0, date '2016-05-01' from dual 
    ) 
select customer_number, 
     first_value(amount) over (partition by customer_number order by dt desc) as amount, 
     bill, sum1, sum2, dt 
from inputs 
order by dt desc 
; 

輸出

CUSTOMER_NUMBER  AMOUNT BILL  SUM1  SUM2 DT 
--------------- ---------- ----- ---------- ---------- ---------- 
      1001  -80 F/002  -10   0 2016-05-01 
      1001  -80 F/001   0  -70 2016-01-01 
+0

排序報告數據對於翻譯問題感到抱歉,但這就是我的意思 超級:) – MartinusP

0

從給定的信息,我認爲你是遞減條款尋找一個順序:

SELECT 
    customer_number, 
    amount, 
    sum1, 
    sum2, 
    date, 
    (other components) 
FROM (
    (content of the report) 
) AS raport 
Order By date desc 
+0

我需要按日期排序金額排序desc, 我不想根據列 – MartinusP