我的問題源於此:選擇進入和加入問題
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,我可能永遠不會再使用它們。
感謝您的幫助。
mytable是什麼樣的?它是否已經包含列Q? – Josien 2012-07-17 07:33:06
@Josien mytable可以包含列Q,但值將全爲空。我想通過插入到...做到這一點,但是另一個問題發生..我有一個很好的選擇語句,但只要我把插入到前面它不會正確插入。它只是添加到最後一行,而不是鏈接到正確的i值。我會在第二天發佈我的代碼 – akwarywo 2012-07-18 12:50:17