2009-08-25 46 views
-1

我有一個表lnd_wkly_plan_rx_summary 和 山坳umns pd_end_dt, nrx_cnt 包含數據需要SQL查詢來創建連接在同一個表

PD_END_DT NRX_CNT 
12/26/08 1,178.75 
12/19/08 2,027.12 
12/12/08 1,907.08 
12/05/08 2,092.90 
11/28/08 1,236.44 
11/21/08 1,857.82 
11/14/08 1,817.55 
11/07/08 1,800.54 
10/31/08 1,985.13 

i need to put a join on same table lnd_wkly_plan_rx_summary 
and compare data of PD_END_DT,NRX_CNT weekly  
so dat i can get difference of NRX_CNT as zero 

最終表將包含以下幾列

PD_END_DT NRX_CNT DELTA 

快照的表格是

MKT_ID PROD_GRP_NBR CHNL_CD PERIOD_FILE_TYPE PD_END_DT NRX_CNT NRX_QTY 
    02601 00000020    1 W 10/12/07 2,041.64 9,706.23 
    02601 00000020    1 W 10/05/07 2,122.89 10,593.91 
    02601 00000020    1 W 09/28/07 2,072.10 10,247.32 
    02601 00000020    1 W 09/21/07 2,070.78 10,042.91 
    02601 00000020    1 W 09/14/07 2,120.01 10,493.93 
    02601  00000020    1 W 09/07/07 1,828.18 8,867.92 
    02601 00000020    1 W 08/31/07 2,294.99 11,115.15 
    02601 00000020    1 W 08/24/07 2,133.24 10,434.83 
    02601  00000020   1 W 08/17/07 2,186.42 10,739.04 

CHNL_CD一起變更1或2 PROD_GRP_NBR 20-200 PERIOD_FILE_TYPE爲W

.........這僅僅是第一步,得到最後的結果...... ......

+1

那麼什麼是你查詢這麼遠? – soulmerge 2009-08-25 10:38:14

+0

我真的不明白你的問題,我很害怕。你想比較NRX_CNT到什麼?比較它本身對我來說沒有意義,因爲你看起來每個日期只有一個值。 要逐周比較所有值,您需要一個透視查詢,並且每個PD_END_DT需要一列。你能解釋一下這個問題嗎? – 2009-08-25 10:57:25

+0

這個問題是非常相關的你在這裏的其他問題:http://stackoverflow.com/questions/1326594/a-sql-query-to-compare-results-of-follwing-queries – 2009-08-25 11:29:27

回答

1

如果你想找到具有相同NRX_CNT周的任意組合(差值= 0),我會去類似於此:

SELECT * 
FROM lnd_wkly_plan_rx_summary as t1 
INNER JOIN lnd_wkly_plan_rx_summary as t2 on t1.nrx_cnt = t2.nrx_cnt 
0

哪種類型的DB你正在使用? SQL Server 2005?

選擇A.PD_END_DT爲 'LAST_PD_END_DT',A.NRX_CNT - B.NRX_CNT爲 'DELTA' 從lnd_wkly_plan_rx_summary爲A 內部聯接lnd_wkly_plan_rx_summary作爲A.PD_END_DT = DATEADD(d,7,B.PD_END_DT乙 )

+1

考慮他使用的標籤Oracle – 2009-08-25 10:48:11

+0

是啊...我使用oracle – Irveen 2009-08-25 10:57:32

0

我在這裏想念的是一個citeriea加入桌子本身。 無論如何 - 如果沒有標準,您將爲每個PD_END_DT獲得 該表中每個記錄的一組記錄,其中顯示了該差異 查詢如下所示: SELECT A.PD_END_DT,A.NRX_CNT,A.NRX_CNT - B.NRX_CNT爲DELTA FROM lnd_wkly_plan_rx_summary A,lnd_wkly_plan_rx_summary乙

我你將有一個 「可連接場」 它看起來像 SELECT A.PD_END_DT,A.NRX_CNT,A.NRX_CNT - B.NRX_CNT爲DELTA FROM lnd_wkly_plan_rx_summary A INNER JOIN lnd_wkly_plan_rx_summary B ON A.JoinableField = B.JoinableField

+0

你的儀式讓我看看它............ – Irveen 2009-08-25 10:58:25

2

如果你想比較NRX_CNT列到前述星期,你可以使用分析功能,它會更快和更清晰比自聯接:

SQL> SELECT pd_end_dt, nrx_cnt, 
    2   nrx_cnt - lag(nrx_cnt) over (ORDER BY pd_end_dt) delta 
    3 FROM lnd_wkly_plan_rx_summary 
    4 ORDER BY pd_end_dt; 

PD_END_DT  NRX_CNT  DELTA 
----------- ---------- ---------- 
31/10/2008  1985,13 
07/11/2008  1800,54 -184,59 
14/11/2008  1817,55  17,01 
21/11/2008  1857,82  40,27 
28/11/2008  1236,44 -621,38 
05/12/2008  2092,9  856,46 
12/12/2008  1907,08 -185,82 
19/12/2008  2027,12  120,04 
26/12/2008  1178,75 -848,37