2012-07-16 80 views
-1

我的問題源於此:選擇進入和加入問題

VBA (Excel) vs SQL - Comparing values in two rows (loop)

我修改劇本一點點,它看起來像這樣:

;WITH data AS 
( 
    SELECT a.i, a.M, b.M as NextM, 
    CASE WHEN a.M = 65 AND b.M = 120 THEN 1 ELSE 0 END AS shouldIncreaseQ 
    FROM MyTable a  
    LEFT OUTER JOIN MyTable b  
    ON a.i + 1 = b.i 
), test as 
(
    SELECT data.M, data.NextM, 
    (SELECT COUNT(*) + 1 FROM data AS ref 
    WHERE ref.shouldIncreaseQ = 1 AND ref.i <= data.i) as Q FROM data 
) 

所以,現在讓SELECT * FROM測試。我得到了這樣的東西。

M  NextM  Q 
65  65  1 
65  65  1 
65  120  2 
120 63  2 
65  120  3 
120 NULL  3 

現在..所有我想是把Q柱(其中Q涉及到NextM),並把在我原來的mytable的。

因此,像這樣:

i  M  Q 
1  65  1 
2  65  1 
3  120 2 
4  63  2 
5  120 3 
6  55  3 

我希望是有道理的。我一直在玩select into,甚至插入到所有DAY(幾個小時),但沒有運氣。 (使用你可以想象的每種類型的連接)

在此先感謝您。 (也可以有人告訴我如何使我的表看起來更好..你使用HTML來做到這一點或什麼)?

UPDATE:

;WITH data AS 
( 
    SELECT a.i, a.M, b.M as NextM, 
    CASE WHEN a.M = 65 AND b.M = 120 THEN 1 ELSE 0 END AS shouldIncreaseQ 
    FROM MyTable a  
    LEFT OUTER JOIN MyTable b  
    ON a.i + 1 = b.i 
), 
test as 
(
    SELECT data.i, data.M, data.NextM, 
    (SELECT COUNT(*) + 1 FROM data AS ref 
    WHERE ref.shouldIncreaseQ = 1 AND ref.i <= data.i) as Q FROM data 
), 
final as 
(
    select a.i, a.M as zw_step, b.Q as prodid 
    from test a 
    left outer join test b 
    on a.i - 1 = b.i 
) 

SELECT final.i, final.zw_step, final.prodid 
FROM final 

現在.. select語句是怎麼樣呢。除了補丁的東西不會用插入命令..(你可能不得不愚弄最後)。 我現在害怕CTE,我可能永遠不會再使用它們。

感謝您的幫助。

+0

mytable是什麼樣的?它是否已經包含列Q? – Josien 2012-07-17 07:33:06

+0

@Josien mytable可以包含列Q,但值將全爲空。我想通過插入到...做到這一點,但是另一個問題發生..我有一個很好的選擇語句,但只要我把插入到前面它不會正確插入。它只是添加到最後一行,而不是鏈接到正確的i值。我會在第二天發佈我的代碼 – akwarywo 2012-07-18 12:50:17

回答

1

好吧,我不太清楚,如果我正確理解你在找什麼。但是,您可能希望與

UPDATE MT 
    SET MT.Q = F.prodid 
    FROM MyTable AS MT 
    INNER JOIN final AS F ON MT.i = F.i AND MT.M = F.zw_step; 

該更換

SELECT final.i, final.zw_step, final.prodid 
FROM final; 

將在final取代Q列中的值在MyTable與值prodid列。這是你想要做的嗎? (基於「NOW ..我想要的只是Q列」(其中Q與NextM相關),並將其放在我原來的mytable中。「)

+0

是的,這正是我所需要的。謝謝。 – akwarywo 2012-07-18 13:20:54

+0

啊,很高興它幫助! – Josien 2012-07-18 13:22:17