我的问题源于此:
我稍微修改了脚本,它看起来像这样:
;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
)
所以现在让我们从测试中选择 *。我得到看起来像这样的东西。
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来做还是什么)?
更新:
;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 语句是我喜欢的方式。除了该死的东西不适用于 insert into 命令..(您可能不得不与 final 混为一谈)。我现在害怕 CTE,我可能永远不会再使用它们了。
谢谢大家的帮助。