日期:2014-05-18  浏览次数:20565 次

SQL字段計算
表結構如下:
訂單號 訂單數量 動作 生產日期 生產數量 累計完工數 未完工數 ID
A0001 1500 A01 2007/09/01 500 500 1000 1
A0001 1500 A01 2007/09/02 700 1200 300 2
A0001 1500 A01 2007/09/03 300 1500 0 3
A0001 1500 B01 2007/09/01 800 800 700 4
B0001 1600 A01 2007/09/04 640 640 960 5
B0001 1600 A01 2007/09/05 300 940 660 6
.
.
.
需要用SQL計算出每一筆錄之累計完工數與未完工數:
累計完工數=依動作計算已生產數量之和
未完工數=訂單數量-累計完工數
希望不使用游標!!

------解决方案--------------------
这两列是不是楼主要显示的结果: 累計完工數 未完工數

SQL code
declare @t table (訂單號 varchar(10),訂單數量 int,動作 varchar(10),生產日期 datetime,生產數量 int,id int) 
insert into @t values('A0001',1500,'A01','2007/09/01',500,1)
insert into @t values('A0001',1500,'A01','2007/09/02',700,2)
insert into @t values('A0001',1500,'A01','2007/09/03',300,3)
insert into @t values('A0001',1500,'B01','2007/09/01',800,4)
insert into @t values('B0001',1600,'A01','2007/09/04',640,5)
insert into @t values('B0001',1600,'A01','2007/09/05',300,6)


select
*,
[累計完工數]=(select sum(生產數量) from @t where ID!>t.ID and 訂單號=t.訂單號 and 動作=t.動作),
[未完工數]=訂單數量-(select sum(生產數量) from @t where ID!>t.ID and 訂單號=t.訂單號 and 動作=t.動作)
from
@t t

(所影响的行数为 1 行)


(所影响的行数为 1 行)


(所影响的行数为 1 行)


(所影响的行数为 1 行)


(所影响的行数为 1 行)


(所影响的行数为 1 行)

訂單號    訂單數量    動作    生產日期                          生產數量    id      累計完工數    未完工數   
---------- ----------- ---------- ------------------------------------------------------ ----------- ----------- ----------- -----------
A0001    1500    A01    2007-09-01 00:00:00.000                500    1      500    1000
A0001    1500    A01    2007-09-02 00:00:00.000                700    2      1200    300
A0001    1500    A01    2007-09-03 00:00:00.000                300    3      1500    0
A0001    1500    B01    2007-09-01 00:00:00.000                800    4      800    700
B0001    1600    A01    2007-09-04 00:00:00.000                640    5      640    960
B0001    1600    A01    2007-09-05 00:00:00.000                300    6      940    660

(所影响的行数为 6 行)