200分求2个表统计合并,逻辑有点复杂

wangxiaofeiwuqiao 2010-11-06 03:02:17
表1:VIEW_DS_MOTime,Mo需求数量表

(物料编码) (物料名称) (MO需求数量) (需求日期) (销售订单号)
ITEM_CODE DES TO_BE_FLLW DATE_START SO_NUMBER
21-00001-00010 塑胶A 60 2010-09-07 SO1012440
21-00001-00010 塑胶A 40 2010-09-28 SO1012441
21-00001-00010 塑胶A 10 2010-11-05 SO1012472
21-00002-00030 塑胶C 50 2010-09-11 SO1012458
21-00002-00030 塑胶C 80 2010-11-11 SO1012458
21-00002-00030 塑胶C 30 2010-11-12 SO1012458
21-00002-00030 塑胶C 40 2010-11-17 SO1012458
.....

表2:SO_LN1,销售单号与成品名称关系表

(销售订单号) (成品名称)
INVOICE CODE
SO1012440 #98-01012
SO1012440 #98-01013
SO1012441 #98-01018
SO1012472 #98-01014
SO1012458 #98-01015
SO1012458 #98-01016
SO1012458 #98-01017
......

表VIEW_DS_MOTime中的SO_NUMBER与表SO_LN1中的INVOICE是同一类型的,2表靠它关联
我想要的效果如下:
1.获取当日所在周为1wk,本周以前的所有总计作为0wk,下周为2wk,类推。。。每周从星期日开始(星期日没有记录,实际从星期一开始),星期六结束,计算每周的MO需求数量和。假如当日是2010-11-06。
2.将每周内需求的销售订单号INVOICE的相关成品名称CODE分别列出来,并能满足1要求合并在一个表格。可以这样(我不知道理论上是否可以实现):

ITEM_CODE DES 0wk 0wk需求成品 1wk 1wk需求成品 2wk 2wk需求成品 ...... 12wk
21-00001-00010 塑胶A 100 #98-01012 10 #98-01014 0 ...... 0
#98-01013
#98-01018
21-00002-00030 塑胶C 50 #98-01015 0 110 #98-01015 ...... 0
#98-01016 #98-01016
#98-01017 #98-01017

只要将满足1,2两点要求,报表用什么格式都可以,只要sql能做到就行,数据库环境: sql server 2000
今天本来是休息的,算免费加班的,上面催的紧,请大家帮帮忙.
如能解决,将此帖http://topic.csdn.net/u/20101106/10/21abcbe5-4f10-4516-8656-3137729d0e84.html?seed=1013378507&r=69648118的分一起给。
...全文
258 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxiaofeiwuqiao 2010-11-08
  • 打赏
  • 举报
回复
你的SQL 包含了一个自定义函数(前面部分)和一个存储过程(后面部分)?
wangxiaofeiwuqiao 2010-11-08
  • 打赏
  • 举报
回复
是不是单独写好 dbo.f_str这个函数
然后再写一个存储过程
再然后在页面中调用这个存储过程??
dawugui 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wangxiaofeiwuqiao 的回复:]
请问要怎么调用11楼的方法?是函数还是存储过程?
[/Quote]
直接在sql语句调用即可,你得把我那些代码都用上去才可。
dawugui 2010-11-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wangxiaofeiwuqiao 的回复:]
dbo.f_str(@ITEM_CODE varchar(20),@des varchar(20) ,@date_num int, @dt datetime) returns varchar(1000)
这里要输入参数,难道都定义为空吗?我调用的时候看到一片空白, 什么也没有
[/Quote]

select ITEM_CODE , des , date_num , max(to_be_fllw) to_be_fllw, code = dbo.f_str(ITEM_CODE , des , date_num,@dt) from

这里在调用,ITEM_CODE , des , date_num,@dt都是定义好的。
wangxiaofeiwuqiao 2010-11-08
  • 打赏
  • 举报
回复
dbo.f_str(@ITEM_CODE varchar(20),@des varchar(20) ,@date_num int, @dt datetime) returns varchar(1000)
这里要输入参数,难道都定义为空吗?我调用的时候看到一片空白, 什么也没有
wangxiaofeiwuqiao 2010-11-08
  • 打赏
  • 举报
回复
请问要怎么调用11楼的方法?是函数还是存储过程?
wangxiaofeiwuqiao 2010-11-08
  • 打赏
  • 举报
回复
8楼的结果有误。采用11楼的方法
wangxiaofeiwuqiao 2010-11-08
  • 打赏
  • 举报
回复
可以连接了,本地测试可以,连接到服务器测试超时,试过很多次了,是不是sql要优化一下?
wangxiaofeiwuqiao 2010-11-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dawugui 的回复:]
--1、我将你的code使用函数(2000用函数,2005用xml,因为你的是sql 2000,所以我用的是函数)组合到一起了,觉得放一起应该明确点,象你那样放几行确实不好实现。

--2、如果你只计算确定的12周,用如下的静态SQL即可,我只写了三周,你自己补全即可。

SQL code
CREATE TABLE [VIEW_DS_MOTime]([ITEM_CODE] varchar……
[/Quote]
12周是确定的,周一早我测试,今天在家没工具,Thanks乌龟
dawugui 2010-11-07
  • 打赏
  • 举报
回复
--3、如果你不知道确定周,需要用如下的动态SQL。
CREATE TABLE [VIEW_DS_MOTime]([ITEM_CODE] varchar(20) , [DES]  nvarchar(10)   ,    [TO_BE_FLLW]  int ,    [DATE_START]  DATETIME   ,    [SO_NUMBER]  VARCHAR(20) )
--插入测试数据
INSERT INTO [VIEW_DS_MOTime] ([ITEM_CODE],[DES],[TO_BE_FLLW],[DATE_START],[SO_NUMBER])
SELECT '21-00001-00010',N'塑胶A',60,'2010-09-07','SO1012440' UNION
SELECT '21-00001-00010',N'塑胶A',40,'2010-09-28','SO1012441' UNION
SELECT '21-00001-00010',N'塑胶A',10,'2010-11-05','SO1012472' UNION
SELECT '21-00002-00030',N'塑胶C',50,'2010-09-11','SO1012458' UNION
SELECT '21-00002-00030',N'塑胶C',80,'2010-11-11','SO1012458' UNION
SELECT '21-00002-00030',N'塑胶C',30,'2010-11-12','SO1012458' UNION
SELECT '21-00002-00030',N'塑胶C',40,'2010-11-17','SO1012458'
CREATE TABLE [SO_LN1]( [INVOICE] VARCHAR(20) , [CODE] VARCHAR(20) )
--插入测试数据
INSERT INTO [SO_LN1] ([INVOICE],[CODE])
SELECT 'SO1012440','#98-01012' UNION
SELECT 'SO1012440','#98-01013' UNION
SELECT 'SO1012441','#98-01018' UNION
SELECT 'SO1012472','#98-01014' UNION
SELECT 'SO1012458','#98-01015' UNION
SELECT 'SO1012458','#98-01016' UNION
SELECT 'SO1012458','#98-01017'
GO

--创建函数实现code的合并
create function dbo.f_str(@ITEM_CODE varchar(20),@des varchar(20) ,@date_num int, @dt datetime) returns varchar(1000)
as
begin
declare @str varchar(1000)
select @str = isnull(@str + ',' , '') + cast(code as varchar) from
(
select distinct t1.* , t3.CODE from
(
SELECT m.ITEM_CODE,m.DES,sum(m.TO_BE_FLLW) TO_BE_FLLW ,case when datediff(week,@dt,m.date_start) + 1 <= 0 then 0 else datediff(week,@dt,m.date_start) + 1 end date_num FROM [VIEW_DS_MOTime] m group by m.ITEM_CODE,m.DES,case when datediff(week,@dt,m.date_start) + 1 <= 0 then 0 else datediff(week,@dt,m.date_start) + 1 end
) t1,VIEW_DS_MOTime t2, SO_LN1 t3
where t1.ITEM_CODE = t2.ITEM_CODE and t2.SO_NUMBER = t3.INVOICE
and (case when datediff(week,@dt,t2.date_start) + 1 <= 0 then 0 else datediff(week,@dt,t2.date_start) + 1 end) = t1.date_num
) o
where ITEM_CODE = @ITEM_CODE and des = @des and date_num = @date_num
return @str
end
go

--定义日期以决定当周
declare @dt as datetime
set @dt = '2010-11-06'

declare @sql varchar(8000)
set @sql = 'select ITEM_CODE,des '
select @sql = @sql + ' , max(case date_num when ''' + cast(date_num as varchar) + ''' then ltrim(to_be_fllw) else '''' end) [' + cast(date_num as varchar) + 'wk]'
+ ' , max(case date_num when ''' + cast(date_num as varchar) + ''' then code else '''' end) [' + cast(date_num as varchar) + 'wk需求成品]'
from (select distinct date_num from
(
SELECT case when datediff(week,@dt,date_start) + 1 <= 0 then 0 else datediff(week,@dt,date_start) + 1 end date_num FROM [VIEW_DS_MOTime]
) m) as a
set @sql = @sql + ' from
(
select ITEM_CODE , des , date_num , max(to_be_fllw) to_be_fllw, code = dbo.f_str(ITEM_CODE , des , date_num,''' +convert(varchar(10),@dt,120) + ''') from
(
select distinct t1.* , t3.CODE from
(
SELECT m.ITEM_CODE,m.DES,sum(m.TO_BE_FLLW) TO_BE_FLLW ,case when datediff(week,''' +convert(varchar(10),@dt,120) + ''',m.date_start) + 1 <= 0 then 0 else datediff(week,''' +convert(varchar(10),@dt,120) + ''',m.date_start) + 1 end date_num FROM [VIEW_DS_MOTime] m group by m.ITEM_CODE,m.DES,case when datediff(week,''' +convert(varchar(10),@dt,120) + ''',m.date_start) + 1 <= 0 then 0 else datediff(week,''' +convert(varchar(10),@dt,120) + ''',m.date_start) + 1 end
) t1,VIEW_DS_MOTime t2, SO_LN1 t3
where t1.ITEM_CODE = t2.ITEM_CODE and t2.SO_NUMBER = t3.INVOICE
and (case when datediff(week,''' +convert(varchar(10),@dt,120) + ''',t2.date_start) + 1 <= 0 then 0 else datediff(week,''' +convert(varchar(10),@dt,120) + ''',t2.date_start) + 1 end) = t1.date_num
) o
group by ITEM_CODE , des , date_num
) m
group by ITEM_CODE,des'

exec(@sql)

drop function dbo.f_str

drop table VIEW_DS_MOTime , SO_LN1

/*
ITEM_CODE des 0wk 0wk需求成品 1wk 1wk需求成品 2wk 2wk需求成品 3wk 3wk需求成品
-------------------- ---------- ------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
21-00001-00010 塑胶A 100 #98-01012,#98-01013,#98-01018 10 #98-01014
21-00002-00030 塑胶C 50 #98-01015,#98-01016,#98-01017 110 #98-01015,#98-01016,#98-01017 40 #98-01015,#98-01016,#98-01017
*/
dawugui 2010-11-07
  • 打赏
  • 举报
回复
--1、我将你的code使用函数(2000用函数,2005用xml,因为你的是sql 2000,所以我用的是函数)组合到一起了,觉得放一起应该明确点,象你那样放几行确实不好实现。

--2、如果你只计算确定的12周,用如下的静态SQL即可,我只写了三周,你自己补全即可。
CREATE TABLE [VIEW_DS_MOTime]([ITEM_CODE] varchar(20) , [DES]  nvarchar(10)   ,    [TO_BE_FLLW]  int ,    [DATE_START]  DATETIME   ,    [SO_NUMBER]  VARCHAR(20) )
--插入测试数据
INSERT INTO [VIEW_DS_MOTime] ([ITEM_CODE],[DES],[TO_BE_FLLW],[DATE_START],[SO_NUMBER])
SELECT '21-00001-00010',N'塑胶A',60,'2010-09-07','SO1012440' UNION
SELECT '21-00001-00010',N'塑胶A',40,'2010-09-28','SO1012441' UNION
SELECT '21-00001-00010',N'塑胶A',10,'2010-11-05','SO1012472' UNION
SELECT '21-00002-00030',N'塑胶C',50,'2010-09-11','SO1012458' UNION
SELECT '21-00002-00030',N'塑胶C',80,'2010-11-11','SO1012458' UNION
SELECT '21-00002-00030',N'塑胶C',30,'2010-11-12','SO1012458' UNION
SELECT '21-00002-00030',N'塑胶C',40,'2010-11-17','SO1012458'
CREATE TABLE [SO_LN1]( [INVOICE] VARCHAR(20) , [CODE] VARCHAR(20) )
--插入测试数据
INSERT INTO [SO_LN1] ([INVOICE],[CODE])
SELECT 'SO1012440','#98-01012' UNION
SELECT 'SO1012440','#98-01013' UNION
SELECT 'SO1012441','#98-01018' UNION
SELECT 'SO1012472','#98-01014' UNION
SELECT 'SO1012458','#98-01015' UNION
SELECT 'SO1012458','#98-01016' UNION
SELECT 'SO1012458','#98-01017'
GO

--创建函数实现code的合并
create function dbo.f_str(@ITEM_CODE varchar(20),@des varchar(20) ,@date_num int, @dt datetime) returns varchar(1000)
as
begin
declare @str varchar(1000)
select @str = isnull(@str + ',' , '') + cast(code as varchar) from
(
select distinct t1.* , t3.CODE from
(
SELECT m.ITEM_CODE,m.DES,sum(m.TO_BE_FLLW) TO_BE_FLLW ,case when datediff(week,@dt,m.date_start) + 1 <= 0 then 0 else datediff(week,@dt,m.date_start) + 1 end date_num FROM [VIEW_DS_MOTime] m group by m.ITEM_CODE,m.DES,case when datediff(week,@dt,m.date_start) + 1 <= 0 then 0 else datediff(week,@dt,m.date_start) + 1 end
) t1,VIEW_DS_MOTime t2, SO_LN1 t3
where t1.ITEM_CODE = t2.ITEM_CODE and t2.SO_NUMBER = t3.INVOICE
and (case when datediff(week,@dt,t2.date_start) + 1 <= 0 then 0 else datediff(week,@dt,t2.date_start) + 1 end) = t1.date_num
) o
where ITEM_CODE = @ITEM_CODE and des = @des and date_num = @date_num
return @str
end
go

--定义日期以决定当周
declare @dt as datetime
set @dt = '2010-11-06'

select ITEM_CODE,des,
max(case date_num when 0 then ltrim(to_be_fllw) else '' end) [0wk],
max(case date_num when 0 then code else '' end) [0wk需求成品],
max(case date_num when 1 then ltrim(to_be_fllw) else '' end) [1wk],
max(case date_num when 1 then code else '' end) [1wk需求成品],
max(case date_num when 2 then ltrim(to_be_fllw) else '' end) [2wk],
max(case date_num when 2 then code else '' end) [2wk需求成品],
max(case date_num when 3 then ltrim(to_be_fllw) else '' end) [3wk],
max(case date_num when 3 then code else '' end) [3wk需求成品]
from
(
select ITEM_CODE , des , date_num , max(to_be_fllw) to_be_fllw, code = dbo.f_str(ITEM_CODE , des , date_num,@dt) from
(
select distinct t1.* , t3.CODE from
(
SELECT m.ITEM_CODE,m.DES,sum(m.TO_BE_FLLW) TO_BE_FLLW ,case when datediff(week,@dt,m.date_start) + 1 <= 0 then 0 else datediff(week,@dt,m.date_start) + 1 end date_num FROM [VIEW_DS_MOTime] m group by m.ITEM_CODE,m.DES,case when datediff(week,@dt,m.date_start) + 1 <= 0 then 0 else datediff(week,@dt,m.date_start) + 1 end
) t1,VIEW_DS_MOTime t2, SO_LN1 t3
where t1.ITEM_CODE = t2.ITEM_CODE and t2.SO_NUMBER = t3.INVOICE
and (case when datediff(week,@dt,t2.date_start) + 1 <= 0 then 0 else datediff(week,@dt,t2.date_start) + 1 end) = t1.date_num
) o
group by ITEM_CODE , des , date_num
) k
group by ITEM_CODE,des


drop function dbo.f_str

drop table VIEW_DS_MOTime , SO_LN1

/*
ITEM_CODE des 0wk 0wk需求成品 1wk 1wk需求成品 2wk 2wk需求成品 3wk 3wk需求成品
-------------------- ---------- ------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
21-00001-00010 塑胶A 100 #98-01012,#98-01013,#98-01018 10 #98-01014
21-00002-00030 塑胶C 50 #98-01015,#98-01016,#98-01017 110 #98-01015,#98-01016,#98-01017 40 #98-01015,#98-01016,#98-01017

(所影响的行数为 2 行)
*/


dawugui 2010-11-06
  • 打赏
  • 举报
回复
等会洗澡后再来看。
wangxiaofeiwuqiao 2010-11-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 limpire 的回复:]
SQL code
-- 创建合并函数
if object_id('fn_Limpire') is not null drop function fn_Limpire
go
CREATE FUNCTION fn_Limpire
(
@ITEM_CODE varchar(14),
@DES varchar(8),
@date datetime, -- 传入本周第……
[/Quote]
好,楼上的能否把测试结果列出来。我好测试。
Limpire 2010-11-06
  • 打赏
  • 举报
回复
-- 创建合并函数
if object_id('fn_Limpire') is not null drop function fn_Limpire
go
CREATE FUNCTION fn_Limpire
(
@ITEM_CODE varchar(14),
@DES varchar(8),
@date datetime, -- 传入本周第一日
@index int -- 0 ~ 12
)
RETURNS nvarchar(4000) AS
BEGIN

declare @d1 datetime, @d2 datetime, @codes nvarchar(4000)

if @index = 0
select @d1 = '1753', @d2 = @date
else
select @d1 = @date, @d2 = dateadd(day, 7*@index, @date)

select @codes = isnull(@codes+char(13)+char(10), '') + b.CODE
from VIEW_DS_MOTime a inner join SO_LN1 b on a.SO_NUMBER=b.INVOICE
where a.ITEM_CODE=@ITEM_CODE and a.DES=@DES and a.DATE_START>=@d1 and a.DATE_START<@d2
group by b.CODE

return isnull(@codes, '')

END
GO

-- 本周第一日

declare @date datetime
set @date = convert(varchar, (getdate() - (@@datefirst - 1 + datepart(weekday, getdate())) % 7), 112)

-- 查询

select ITEM_CODE, DES,
sum(case when DATE_START<@date then TO_BE_FLLW else 0 end) [0wk],
max(case when DATE_START<@date then dbo.fn_Limpire(ITEM_CODE,DES,@date,0) else '' end) [0code],
sum(case datediff(day,@date,DATE_START)/7 when 0 then TO_BE_FLLW else 0 end) [1wk],
max(case datediff(day,@date,DATE_START)/7 when 0 then dbo.fn_Limpire(ITEM_CODE,DES,@date,1) else '' end) [1code],
sum(case datediff(day,@date,DATE_START)/7 when 1 then TO_BE_FLLW else 0 end) [2wk],
max(case datediff(day,@date,DATE_START)/7 when 1 then dbo.fn_Limpire(ITEM_CODE,DES,@date,2) else '' end) [2code],
sum(case datediff(day,@date,DATE_START)/7 when 2 then TO_BE_FLLW else 0 end) [3wk],
max(case datediff(day,@date,DATE_START)/7 when 2 then dbo.fn_Limpire(ITEM_CODE,DES,@date,3) else '' end) [3code],
sum(case datediff(day,@date,DATE_START)/7 when 3 then TO_BE_FLLW else 0 end) [4wk],
max(case datediff(day,@date,DATE_START)/7 when 3 then dbo.fn_Limpire(ITEM_CODE,DES,@date,4) else '' end) [4code],
sum(case datediff(day,@date,DATE_START)/7 when 4 then TO_BE_FLLW else 0 end) [5wk],
max(case datediff(day,@date,DATE_START)/7 when 4 then dbo.fn_Limpire(ITEM_CODE,DES,@date,5) else '' end) [5code],
sum(case datediff(day,@date,DATE_START)/7 when 5 then TO_BE_FLLW else 0 end) [6wk],
max(case datediff(day,@date,DATE_START)/7 when 5 then dbo.fn_Limpire(ITEM_CODE,DES,@date,6) else '' end) [6code],
sum(case datediff(day,@date,DATE_START)/7 when 6 then TO_BE_FLLW else 0 end) [7wk],
max(case datediff(day,@date,DATE_START)/7 when 6 then dbo.fn_Limpire(ITEM_CODE,DES,@date,7) else '' end) [7code],
sum(case datediff(day,@date,DATE_START)/7 when 7 then TO_BE_FLLW else 0 end) [8wk],
max(case datediff(day,@date,DATE_START)/7 when 7 then dbo.fn_Limpire(ITEM_CODE,DES,@date,8) else '' end) [8code],
sum(case datediff(day,@date,DATE_START)/7 when 8 then TO_BE_FLLW else 0 end) [9wk],
max(case datediff(day,@date,DATE_START)/7 when 8 then dbo.fn_Limpire(ITEM_CODE,DES,@date,9) else '' end) [9code],
sum(case datediff(day,@date,DATE_START)/7 when 9 then TO_BE_FLLW else 0 end) [10wk],
max(case datediff(day,@date,DATE_START)/7 when 9 then dbo.fn_Limpire(ITEM_CODE,DES,@date,10) else '' end) [10code],
sum(case datediff(day,@date,DATE_START)/7 when 10 then TO_BE_FLLW else 0 end) [11wk],
max(case datediff(day,@date,DATE_START)/7 when 10 then dbo.fn_Limpire(ITEM_CODE,DES,@date,11) else '' end) [11code],
sum(case datediff(day,@date,DATE_START)/7 when 11 then TO_BE_FLLW else 0 end) [12wk],
max(case datediff(day,@date,DATE_START)/7 when 11 then dbo.fn_Limpire(ITEM_CODE,DES,@date,12) else '' end) [12code]
from VIEW_DS_MOTime group by ITEM_CODE, DES


把原来的 case when 改了,原来的判断跨年有问题
wangxiaofeiwuqiao 2010-11-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zsh0809 的回复:]
帮你贴出脚本,方便大侠们使用,我学习.....

SQL code
CREATE TABLE [#VIEW_DS_MOTime]
(
[ITEM_CODE] varchar(20) ,
[DES] nvarchar(10) ,
[TO_BE_FLLW] VARCHAR(10) ,
[DATE_START] DATETIME ,……
[/Quote]
谢谢
wangxiaofeiwuqiao 2010-11-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 limpire 的回复:]
这是1条记录还是3条记录?

SQL code
21-00001-00010 塑胶A 100 #98-01012 10 #98-01014 0 ...... 0
#98-01013
……
[/Quote]
这里实际是一条记录,
「已注销」 2010-11-06
  • 打赏
  • 举报
回复
帮你贴出脚本,方便大侠们使用,我学习.....
CREATE TABLE [#VIEW_DS_MOTime]
(
[ITEM_CODE] varchar(20) ,
[DES] nvarchar(10) ,
[TO_BE_FLLW] VARCHAR(10) ,
[DATE_START] DATETIME ,
[SO_NUMBER] VARCHAR(20)
)
GO

--插入测试数据
INSERT INTO [#VIEW_DS_MOTime] ([ITEM_CODE],[DES],[TO_BE_FLLW],[DATE_START],[SO_NUMBER])
SELECT '21-00001-00010',N'塑胶A','60','2010-09-07','SO1012440' UNION
SELECT '21-00001-00010',N'塑胶A','40','2010-09-28','SO1012441' UNION
SELECT '21-00001-00010',N'塑胶A','10','2010-11-05','SO1012472' UNION
SELECT '21-00002-00030',N'塑胶C','50','2010-09-11','SO1012458' UNION
SELECT '21-00002-00030',N'塑胶C','80','2010-11-11','SO1012458' UNION
SELECT '21-00002-00030',N'塑胶C','30','2010-11-12','SO1012458' UNION
SELECT '21-00002-00030',N'塑胶C','40','2010-11-17','SO1012458'
GO

CREATE TABLE [#SO_LN1]
(
[INVOICE] VARCHAR(20) ,
[CODE] VARCHAR(20)
)
GO

--插入测试数据
INSERT INTO [#SO_LN1] ([INVOICE],[CODE])
SELECT 'SO1012440','#98-01012' UNION
SELECT 'SO1012440','#98-01013' UNION
SELECT 'SO1012441','#98-01018' UNION
SELECT 'SO1012472','#98-01014' UNION
SELECT 'SO1012458','#98-01015' UNION
SELECT 'SO1012458','#98-01016' UNION
SELECT 'SO1012458','#98-01017'
GO

SELECT * FROM [#VIEW_DS_MOTime]
SELECT * FROM [#SO_LN1]
Limpire 2010-11-06
  • 打赏
  • 举报
回复
这是1条记录还是3条记录?
21-00001-00010  塑胶A     100   #98-01012      10      #98-01014       0                   ......   0
#98-01013
#98-01018
wangxiaofeiwuqiao 2010-11-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zsh0809 的回复:]
又来了,赶紧呼叫大乌龟,你应该直接点给他处理。
[/Quote]
他潜水了哦,没找到他
「已注销」 2010-11-06
  • 打赏
  • 举报
回复
又来了,赶紧呼叫大乌龟,你应该直接点给他处理。
加载更多回复(1)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧