'sql 语句问题:请进:
table1
入库类型 入库吨数 完成
a 22 1
b 2 1
c 36 1
a 28 1
b 2 1
a 2 0
b 21 0
c 38 0
b 21 0
c 38 0
我想得到这样一个查询结果:
入库类型 已完成吨数 未完成吨数
a 30 2
b 4 42
c 36 76
也就是入库吨数求和,按类型---row,完成--col
问题点数:20、回复次数:13Top
1 楼GumPGZ(努力*奋斗)回复于 2002-07-21 17:52:10 得分 0
select * from table1 order by 入库类型 compute sum(入库类型)
这样就能得到了Top
2 楼neary(流浪)回复于 2002-07-22 06:21:55 得分 0
to GumPGZ(像阿甘一样奔跑):
无法实现
请大家关注Top
3 楼ameng_2002(flyfox)回复于 2002-07-22 09:37:58 得分 0
select 入库类型,sum(完成) as 已完成吨数,sum(未完成)as 未完成吨数
from table1
group by 入库类型
Top
4 楼GaoFX(紫龙)回复于 2002-07-22 10:09:59 得分 0
你的查询结果与前面的数据是什么关系?有点不明白。说明白我给你写Top
5 楼GumPGZ(努力*奋斗)回复于 2002-07-22 10:15:15 得分 0
我不太明白你的意思,
你是想对每中入库类型的入库吨数和完成数求和么?Top
6 楼neary(流浪)回复于 2002-07-22 16:54:10 得分 0
完成是逻辑字段,表示是否已经入库
我想查出每个类型的已经入库吨数和未入库吨数
谢谢大家的关注!!Top
7 楼GumPGZ(努力*奋斗)回复于 2002-07-22 20:37:49 得分 0
我怎么就没看出未入库吨数在哪里呢Top
8 楼GumPGZ(努力*奋斗)回复于 2002-07-22 20:38:11 得分 0
我怎么就没看出未入库吨数在哪里呢Top
9 楼losenetway(firesword)回复于 2002-07-22 23:14:38 得分 0
那种问题想用一个SQL搞定好像不可能,如果可以在数据库中建一个临时表的话那还是可以作出来的Top
10 楼losenetway(firesword)回复于 2002-07-22 23:20:31 得分 0
那种问题想用一个SQL搞定好像不可能,如果可以在数据库中建一个临时表的话那还是可以作出来的Top
11 楼ameng_2002(flyfox)回复于 2002-07-23 10:39:11 得分 0
一种比较笨的方法,创建两个视图
use mis
go
create view view1
as
select 入库类型,sum(入库吨数) as 完成吨数 from test where 完成状况='1'group by 入库类型
go
create view view2
as
select 入库类型,sum(入库吨数) as 未完成吨数 from test where 完成状况='0'group by 入库类型
go
select view1.入库类型,view1.完成吨数 ,未完成吨数 from view1,view2
where view1.入库类型=view2.入库类型
Top
12 楼xu_zu002(自已量化)回复于 2002-07-23 11:57:31 得分 0
不知我理解你的意思是否正確.
create table #test1 (goin_type varchar(1),num int ,F_sing varchar(1))
select Test.T_type,Test.Total_num,Test2.Total_num from
(
select goin_type as T_type,F_sing,sum(num) as Total_num from #test1 where f_sing='1' group by goin_type,F_sing
) as Test
left join
(select goin_type as T_type ,F_sing,sum(num) as Total_num from #test1 where f_sing='0' group by goin_type,F_sing ) as Test2
on
Test.T_type=Test2.T_type
Top
13 楼xu_zu002(自已量化)回复于 2002-07-23 11:59:22 得分 0
create table #test1 (goin_type varchar(1),num int ,F_sing varchar(1))
select Test.T_type,Test.Total_num,Test2.Total_num from
(
select goin_type as T_type,F_sing,sum(num) as Total_num from #test1 where f_sing='1' group by goin_type,F_sing
) as Test
left join
(select goin_type as T_type ,F_sing,sum(num) as Total_num from #test1 where f_sing='0' group by goin_type,F_sing ) as Test2
on
Test.T_type=Test2.T_type
我是這樣理解的Top
14 楼GaoFX(紫龙)回复于 2002-07-23 14:12:42 得分 0
--假设置表的数据结构如下:
CREATE Table Storage(
Type char(4) not null, /*入库类型*/
Quantity float not null default 0, /*入库数量*/
IsFinished bit not null default 0 /*是否完成*/
)
go
--增加(插入)数据
--......
--查询
SELECT T1.Type , T1.Quantity, T2.Quantity
FROM ( SELECT Type, SUM( Quantity) AS Quantity FROM Storage2 WHERE IsFinished = 1 GROUP BY Type ) T1,
( SELECT Type, SUM( Quantity) AS Quantity FROM Storage2 WHERE IsFinished = 0 GROUP BY Type ) T2
WHERE T1.Type = T2.Type
go
--查询结果如下:
Type Quantity Quantity
---- ------------ -----------
a 50.0 2.0
b 4.0 42.0
c 36.0 76.0
(所影响的行数为 3 行)
不知道是不是要的这个结果
Top
15 楼GaoFX(紫龙)回复于 2002-07-23 14:15:34 得分 20
中间的表名写错了,应该为
SELECT T1.Type , T1.Quantity, T2.Quantity
FROM ( SELECT Type, SUM( Quantity) AS Quantity FROM Storage WHERE IsFinished = 1 GROUP BY Type ) T1,
( SELECT Type, SUM( Quantity) AS Quantity FROM Storage WHERE IsFinished = 0 GROUP BY Type ) T2
WHERE T1.Type = T2.Type
goTop




