选择进入和加入问题

选择进入和加入问题

问题描述:

我的问题源于此:选择进入和加入问题

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

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

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