注册 登录
编程论坛 SQL Server论坛

sql server语句求助

dsdsds1 发布于 2012-07-25 17:20, 646 次点击
表1
日期          产品1   产品2   产品3   长度    数量
2012-7-5    A    B    C    50    7
2012-7-5    B    C    D    50    8
2012-7-5    C    D    E    60    9



请问高手如何通过sql语句得到如下表2


日期          产品    长度     合计
2012-7-5    A    50    7
2012-7-5    B    50    15
2012-7-5    C    50    15
2012-7-5    C    60    9
2012-7-5    D    50    8
2012-7-5    D    60    9
2012-7-5    E    60    9
6 回复
#2
netlin2012-07-26 09:31
select 日期,产品,长度,sum(数量) as 合计 into 表2 from (
select 日期,产品1 as 产品,长度,数量 from 表1
union all
select 日期,产品2 as 产品,长度,数量 from 表1
union all
select 日期,产品3 as 产品,长度,数量 from 表1
) a
group by 日期,产品,长度
order by 产品


[ 本帖最后由 netlin 于 2012-7-26 09:43 编辑 ]
#3
dsdsds12012-07-26 10:52
你这个语句还是不行啊,读不出来。
#4
hong2932012-07-26 17:31
2楼的你个语句是可以用的,不知道你说的不出来是怎么个不出来??
#5
hong2932012-07-26 17:31
回复 3楼 dsdsds1
报什么错不?
#6
dsdsds12012-07-27 09:10
回复 5楼 hong293
2楼语句可以用,但只能用一次。如果我表一增加了数据后,执行这个语句,就提示“数据库中已存在名为‘表2’的对象”。如何解决啊。
#7
netlin2012-07-28 13:27
楼主,如果你要多次使用,建议你这样吧:

先在查询器中运行一次下面的代码:
if exists (select * from sysobjects where id = object_id(N'[dbo].[表2]') and OBJECTPROPERTY(id,N'IsUserTable')=1)drop table [dbo].[表2]
CREATE VIEW 表2 AS
select 日期,产品,长度,sum(数量) as 合计 from (
select 日期,产品1 as 产品,长度,数量 from 表1
union all
select 日期,产品2 as 产品,长度,数量 from 表1
union all
select 日期,产品3 as 产品,长度,数量 from 表1
) a
group by 日期,产品,长度
order by 产品

以后,就可以多次使用:
select * from 表2
(当表1的记录变化时,表2也会自动变化)

1