--建立测试环境
Create table 表1
(单据ID Varchar(10),
单据类型 Varchar(10),
仓号 Varchar(10),
时间 DateTime,
单号 Varchar(10),
厂家 Varchar(10)
)Create table 表2
(AutoID Varchar(10),
单据ID Varchar(10),
料号 Varchar(20),
数量 Int
)
GO
--插入数据
Insert 表1 Values('137053', '01', '01', '03-Jan-05', '0000000001', '02LQWX')
Insert 表1 Values('137054', '01', '01', '03-Jan-05', '0000000002', '02LQWH')
Insert 表1 Values('137055', '01', '01', '04-Jan-05', '0000000003', '01BJSH')
Insert 表1 Values('137056', '01', '01', '04-Jan-05', '0000000004', '01BJSS')
Insert 表1 Values('137057', '01', '01', '04-Jan-05', '0000000005', '01SHDD')Insert 表2 Values('8353129', '137053', '64314-LGZ-020', 1800)
Insert 表2 Values('8353130', '137053', '64315-LGZ-020', 1800)
Insert 表2 Values('8353131', '137054', '64314-LGZ-021', 1800)
Insert 表2 Values('8353132', '137054', '64315-LGZ-020', 1800)
Insert 表2 Values('8353133', '137054', '64315-LGZ-070', 1000)
GO
--测试
Alter table 表2 Add ID Int
GO
Update A Set ID=(Select Count(*) from 表2 Where 料号=A.料号 And AutoID<=A.AutoID) from 表2 A
Select
料号,
SUM(数量) As 数量,
(Select 厂家 from 表1 Inner Join 表2 On 表1.单据ID=表2.单据ID Where 料号=A.料号 And ID=1) As 厂家1,
(Select 数量 from 表2 Where 料号=A.料号 And ID=1) As 厂家1数量,
(Select 厂家 from 表1 Inner Join 表2 On 表1.单据ID=表2.单据ID Where 料号=A.料号 And ID=2) As 厂家2,
(Select 数量 from 表2 Where 料号=A.料号 And ID=2) As 厂家2数量,
(Select 厂家 from 表1 Inner Join 表2 On 表1.单据ID=表2.单据ID Where 料号=A.料号 And ID=3) As 厂家3,
(Select 数量 from 表2 Where 料号=A.料号 And ID=3) As 厂家3数量
from 表2 A
Group By 料号
Order By 料号
--删除测试环境
Drop table 表1,表2
--结果
/*
料号 数量 厂家1 厂家1数量 厂家2 厂家2数量 厂家3 厂家3数量
64314-LGZ-020 1800 02LQWX 1800 NULL NULL NULL NULL
64314-LGZ-021 1800 02LQWH 1800 NULL NULL NULL NULL
64315-LGZ-020 3600 02LQWX 1800 02LQWH 1800 NULL NULL
64315-LGZ-070 1000 02LQWH 1000 NULL NULL NULL NULL
*/
Create table 表1
(单据ID Varchar(10),
单据类型 Varchar(10),
仓号 Varchar(10),
时间 DateTime,
单号 Varchar(10),
厂家 Varchar(10)
)Create table 表2
(AutoID Varchar(10),
单据ID Varchar(10),
料号 Varchar(20),
数量 Int
)
GO
--插入数据
Insert 表1 Values('137053', '01', '01', '03-Jan-05', '0000000001', '02LQWX')
Insert 表1 Values('137054', '01', '01', '03-Jan-05', '0000000002', '02LQWH')
Insert 表1 Values('137055', '01', '01', '04-Jan-05', '0000000003', '01BJSH')
Insert 表1 Values('137056', '01', '01', '04-Jan-05', '0000000004', '01BJSS')
Insert 表1 Values('137057', '01', '01', '04-Jan-05', '0000000005', '01SHDD')Insert 表2 Values('8353129', '137053', '64314-LGZ-020', 1800)
Insert 表2 Values('8353130', '137053', '64315-LGZ-020', 1800)
Insert 表2 Values('8353131', '137054', '64314-LGZ-021', 1800)
Insert 表2 Values('8353132', '137054', '64315-LGZ-020', 1800)
Insert 表2 Values('8353133', '137054', '64315-LGZ-070', 1000)
GO
--测试
Alter table 表2 Add ID Int
GO
Update A Set ID=(Select Count(*) from 表2 Where 料号=A.料号 And AutoID<=A.AutoID) from 表2 A
Select
料号,
SUM(数量) As 数量,
(Select 厂家 from 表1 Inner Join 表2 On 表1.单据ID=表2.单据ID Where 料号=A.料号 And ID=1) As 厂家1,
(Select 数量 from 表2 Where 料号=A.料号 And ID=1) As 厂家1数量,
(Select 厂家 from 表1 Inner Join 表2 On 表1.单据ID=表2.单据ID Where 料号=A.料号 And ID=2) As 厂家2,
(Select 数量 from 表2 Where 料号=A.料号 And ID=2) As 厂家2数量,
(Select 厂家 from 表1 Inner Join 表2 On 表1.单据ID=表2.单据ID Where 料号=A.料号 And ID=3) As 厂家3,
(Select 数量 from 表2 Where 料号=A.料号 And ID=3) As 厂家3数量
from 表2 A
Group By 料号
Order By 料号
--删除测试环境
Drop table 表1,表2
--结果
/*
料号 数量 厂家1 厂家1数量 厂家2 厂家2数量 厂家3 厂家3数量
64314-LGZ-020 1800 02LQWX 1800 NULL NULL NULL NULL
64314-LGZ-021 1800 02LQWH 1800 NULL NULL NULL NULL
64315-LGZ-020 3600 02LQWX 1800 02LQWH 1800 NULL NULL
64315-LGZ-070 1000 02LQWH 1000 NULL NULL NULL NULL
*/
Select * Into #T from 表2
Alter table #T Add ID Int
GO
Update A Set ID=(Select Count(*) from #T Where 料号=A.料号 And AutoID<=A.AutoID) from #T A 再将上面查询语句的表2替换为#T