我有一個表叫採購明細表,現在新增一字段"採購序號",用來將訂單明細進行排序.
請問如何用SQL語句達成以下目的?原來的表:
採購訂單 材料 數量
PO2010060001 AA 1200
PO2010060001 BB 200
PO2010060001 CC 600
PO2010060002 CC 1400
PO2010060002 AA 800現在的表:
採購訂單 採購序號 材料 數量
PO2010060001 0 AA 1200
PO2010060001 0 BB 200
PO2010060001 0 CC 600
PO2010060002 0 CC 1400
PO2010060002 0 AA 800我希望得到的表:採購訂單 採購序號 材料 數量
PO2010060001 1 AA 1200
PO2010060001 2 BB 200
PO2010060001 3 CC 600
PO2010060002 1 CC 1400
PO2010060002 2 AA 800謝謝大家的幫助.
請問如何用SQL語句達成以下目的?原來的表:
採購訂單 材料 數量
PO2010060001 AA 1200
PO2010060001 BB 200
PO2010060001 CC 600
PO2010060002 CC 1400
PO2010060002 AA 800現在的表:
採購訂單 採購序號 材料 數量
PO2010060001 0 AA 1200
PO2010060001 0 BB 200
PO2010060001 0 CC 600
PO2010060002 0 CC 1400
PO2010060002 0 AA 800我希望得到的表:採購訂單 採購序號 材料 數量
PO2010060001 1 AA 1200
PO2010060001 2 BB 200
PO2010060001 3 CC 600
PO2010060002 1 CC 1400
PO2010060002 2 AA 800謝謝大家的幫助.
SELECT 'PO2010060001','AA',1200 UNION ALL
SELECT 'PO2010060001','BB',200 UNION ALL
SELECT 'PO2010060001','CC',600 UNION ALL
SELECT 'PO2010060002','CC',1400 UNION ALL
SELECT 'PO2010060002','AA',800ALTER TABLE T ADD 採購序號 INTUPDATE T SET 採購序號=RN
FROM(SELECT *,RN=ROW_NUMBER() OVER(PARTITION BY 採購訂單 ORDER BY GETDATE())FROM T) A
JOIN T B ON A.採購訂單=B.採購訂單 AND A.材料=B.材料 AND A.數量=B.數量
SELECT 採購訂單,採購序號,材料,數量 FROM T採購訂單 採購序號 材料 數量
-------------------- ----------- ---------- -----------
PO2010060001 1 AA 1200
PO2010060001 2 BB 200
PO2010060001 3 CC 600
PO2010060002 1 CC 1400
PO2010060002 2 AA 800
insert @taselect 'PO2010060001','AA', 1200 UNION ALL
select 'PO2010060001','BB', 200 UNION ALL
select 'PO2010060001','CC', 600 UNION ALL
select 'PO2010060002','CC', 1400 UNION ALL
select 'PO2010060002','AA', 800
select a,0 as n,b,c into #T from @ta
declare @a varchar(20),@num int
set @num=1update #t set n=@num,@num=case when a=@a then @num+1 else 1 end,@a=aselect * from #t
(所影响的行数为 5 行)a n b c
-------------------- ----------- -------------------- -----------
PO2010060001 1 AA 1200
PO2010060001 2 BB 200
PO2010060001 3 CC 600
PO2010060002 1 CC 1400
PO2010060002 2 AA 800(所影响的行数为 5 行)