一个查询问题 select a.CKBH , a.WPBH, sum(QMSL) from kc a where RQ = (select max(RQ) from kc where CKBH = a.CKBH and WPBH = a.WPBH)group by a.CKBH , a.WPBH 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 create table tb(CKBH varchar(10),XSDDH varchar(10),WPBH varchar(10),RQ datetime,QMSL int)insert into tb values('CK1','XS001','WP001', '2007-12-5', 100) insert into tb values('CK2','XS001','WP001', '2007-12-5', 100) insert into tb values('CK1','XS002','WP002', '2007-12-5', 100) insert into tb values('CK2','XS002','WP002', '2007-12-5', 100) insert into tb values('CK1','XS003','WP001', '2007-12-2', 30 )insert into tb values('CK2','XS003','WP001', '2007-12-2', 40 )insert into tb values('CK1','XS004','WP002', '2007-12-2', 50 )insert into tb values('CK2','XS004','WP002', '2007-12-2', 60 )insert into tb values('CK1','XS001','WP001', '2007-12-3', 10 )insert into tb values('CK2','XS001','WP001', '2007-12-3', 10 )insert into tb values('CK1','XS002','WP002', '2007-12-3', 10 ) insert into tb values('CK2','XS002','WP002', '2007-12-3', 10 )insert into tb values('CK1','XS003','WP001', '2007-12-1', 20 )insert into tb values('CK2','XS003','WP001', '2007-12-1', 20 )insert into tb values('CK1','XS004','WP002', '2007-12-1', 20 )insert into tb values('CK2','XS004','WP002', '2007-12-1', 20 )goselect a.CKBH , a.WPBH, QMSL = sum(QMSL) from tb a where RQ = (select max(RQ) from tb where CKBH = a.CKBH and WPBH = a.WPBH) group by a.CKBH , a.WPBH order by a.WPBH,a.CKBHdrop table tb/*CKBH WPBH QMSL ---------- ---------- ----------- CK1 WP001 100CK2 WP001 100CK1 WP002 100CK2 WP002 100(所影响的行数为 4 行)*/ select CKBH,WPBH,sum(QMSL)from table awhere not exists(select 1 from table where a.CKBH =CKBH and a.WPBH =WPBH and a.RQ<RQ)group by CKBH,WPBH --怎么和你的结果有点出入,是我理解错了?create table tb(CKBH varchar(10),XSDDH varchar(10),WPBH varchar(10),RQ datetime,QMSL int)insert into tb values('CK1','XS001','WP001', '2007-12-5', 100) insert into tb values('CK2','XS001','WP001', '2007-12-5', 100) insert into tb values('CK1','XS002','WP002', '2007-12-5', 100) insert into tb values('CK2','XS002','WP002', '2007-12-5', 100) insert into tb values('CK1','XS003','WP001', '2007-12-2', 30 )insert into tb values('CK2','XS003','WP001', '2007-12-2', 40 )insert into tb values('CK1','XS004','WP002', '2007-12-2', 50 )insert into tb values('CK2','XS004','WP002', '2007-12-2', 60 )insert into tb values('CK1','XS001','WP001', '2007-12-3', 10 )insert into tb values('CK2','XS001','WP001', '2007-12-3', 10 )insert into tb values('CK1','XS002','WP002', '2007-12-3', 10 ) insert into tb values('CK2','XS002','WP002', '2007-12-3', 10 )insert into tb values('CK1','XS003','WP001', '2007-12-1', 20 )insert into tb values('CK2','XS003','WP001', '2007-12-1', 20 )insert into tb values('CK1','XS004','WP002', '2007-12-1', 20 )insert into tb values('CK2','XS004','WP002', '2007-12-1', 20 )goselect a.CKBH , a.WPBH, QMSL = sum(a.QMSL) from tb a where RQ = (select max(RQ) from tb where CKBH = a.CKBH and WPBH = a.WPBH) group by a.CKBH , a.WPBH order by a.CKBH , a.WPBHdrop table tb/*CKBH WPBH QMSL ---------- ---------- ----------- CK1 WP001 100CK1 WP002 100CK2 WP001 100CK2 WP002 100(所影响的行数为 4 行)*/ --经过测试,发现我和石头的结果一样。应该是楼主错了。create table tb(CKBH varchar(10),XSDDH varchar(10),WPBH varchar(10),RQ datetime,QMSL int)insert into tb values('CK1','XS001','WP001', '2007-12-5', 100) insert into tb values('CK2','XS001','WP001', '2007-12-5', 100) insert into tb values('CK1','XS002','WP002', '2007-12-5', 100) insert into tb values('CK2','XS002','WP002', '2007-12-5', 100) insert into tb values('CK1','XS003','WP001', '2007-12-2', 30 )insert into tb values('CK2','XS003','WP001', '2007-12-2', 40 )insert into tb values('CK1','XS004','WP002', '2007-12-2', 50 )insert into tb values('CK2','XS004','WP002', '2007-12-2', 60 )insert into tb values('CK1','XS001','WP001', '2007-12-3', 10 )insert into tb values('CK2','XS001','WP001', '2007-12-3', 10 )insert into tb values('CK1','XS002','WP002', '2007-12-3', 10 ) insert into tb values('CK2','XS002','WP002', '2007-12-3', 10 )insert into tb values('CK1','XS003','WP001', '2007-12-1', 20 )insert into tb values('CK2','XS003','WP001', '2007-12-1', 20 )insert into tb values('CK1','XS004','WP002', '2007-12-1', 20 )insert into tb values('CK2','XS004','WP002', '2007-12-1', 20 )go--我的。select a.CKBH , a.WPBH, QMSL = sum(a.QMSL) from tb a where RQ = (select max(RQ) from tb where CKBH = a.CKBH and WPBH = a.WPBH) group by a.CKBH , a.WPBH order by a.CKBH , a.WPBH/*CKBH WPBH QMSL ---------- ---------- ----------- CK1 WP001 100CK1 WP002 100CK2 WP001 100CK2 WP002 100(所影响的行数为 4 行)*/--石头的。select CKBH,WPBH,qmsl = sum(QMSL)from tb awhere not exists(select 1 from tb where a.CKBH =CKBH and a.WPBH =WPBH and a.RQ<RQ)group by CKBH,WPBH/*CKBH WPBH qmsl ---------- ---------- ----------- CK1 WP001 100CK2 WP001 100CK1 WP002 100CK2 WP002 100(所影响的行数为 4 行)*/drop table tb 要统计:最晚日期某个仓库,某个物品的各销售订单(xsddh)期末数量和 谢谢,各位,好快........... CK1 WP001 130 你说这条结果咋计算来的?或是哪几条记录相加? CK1 XS001 WP001 2007-12-5 100 CK1 XS003 WP001 2007-12-2 30 CK1 XS002 WP002 2007-12-5 100 CK1 XS004 WP002 2007-12-2 50 CK2 XS001 WP001 2007-12-5 100 CK2 XS003 WP001 2007-12-2 40 CK2 XS002 WP002 2007-12-5 100 CK2 XS004 WP002 2007-12-2 60 仓库编号CKBH 物品编号WPBH 期末数量QMSL CK1 WP001 130 CK1 WP002 150 CK2 WP001 140 CK2 WP002 160 要统计:最晚日期某个仓库,某个物品的各销售订单(xsddh)期末数量和 谢谢,各位,好快...........---上面的答案就能达到 如楼主所说:'CK1','XS003','WP001', '2007-12-1', 20 这条为啥不加? create table tb(CKBH varchar(10),XSDDH varchar(10),WPBH varchar(10),RQ datetime,QMSL int)insert into tb values('CK1','XS001','WP001', '2007-12-5', 100) insert into tb values('CK2','XS001','WP001', '2007-12-5', 100) insert into tb values('CK1','XS002','WP002', '2007-12-5', 100) insert into tb values('CK2','XS002','WP002', '2007-12-5', 100) insert into tb values('CK1','XS003','WP001', '2007-12-2', 30 )insert into tb values('CK2','XS003','WP001', '2007-12-2', 40 )insert into tb values('CK1','XS004','WP002', '2007-12-2', 50 )insert into tb values('CK2','XS004','WP002', '2007-12-2', 60 )insert into tb values('CK1','XS001','WP001', '2007-12-3', 10 )insert into tb values('CK2','XS001','WP001', '2007-12-3', 10 )insert into tb values('CK1','XS002','WP002', '2007-12-3', 10 ) insert into tb values('CK2','XS002','WP002', '2007-12-3', 10 )insert into tb values('CK1','XS003','WP001', '2007-12-1', 20 )insert into tb values('CK2','XS003','WP001', '2007-12-1', 20 )insert into tb values('CK1','XS004','WP002', '2007-12-1', 20 )insert into tb values('CK2','XS004','WP002', '2007-12-1', 20 )go--石头的。select CKBH,WPBH,qmsl = sum(QMSL)from tb awhere not exists(select 1 from tb where XSDDH = a.XSDDH and a.CKBH =CKBH and a.WPBH =WPBH and a.RQ<RQ)group by CKBH,WPBH/*CKBH WPBH qmsl ---------- ---------- ----------- CK1 WP001 130CK2 WP001 140CK1 WP002 150CK2 WP002 160(所影响的行数为 4 行)*/drop table tb use testgodeclare @T table (CKBH varchar(10),XSDDH varchar(10),WPBH varchar(10),RQ datetime,QMSL int)insert into @T values('CK1','XS001','WP001', '2007-12-5', 100) insert into @T values('CK2','XS001','WP001', '2007-12-5', 100) insert into @T values('CK1','XS002','WP002', '2007-12-5', 100) insert into @T values('CK2','XS002','WP002', '2007-12-5', 100) insert into @T values('CK1','XS003','WP001', '2007-12-2', 30 )insert into @T values('CK2','XS003','WP001', '2007-12-2', 40 )insert into @T values('CK1','XS004','WP002', '2007-12-2', 50 )insert into @T values('CK2','XS004','WP002', '2007-12-2', 60 )insert into @T values('CK1','XS001','WP001', '2007-12-3', 10 )insert into @T values('CK2','XS001','WP001', '2007-12-3', 10 )insert into @T values('CK1','XS002','WP002', '2007-12-3', 10 ) insert into @T values('CK2','XS002','WP002', '2007-12-3', 10 )insert into @T values('CK1','XS003','WP001', '2007-12-1', 20 )insert into @T values('CK2','XS003','WP001', '2007-12-1', 20 )insert into @T values('CK1','XS004','WP002', '2007-12-1', 20 )insert into @T values('CK2','XS004','WP002', '2007-12-1', 20 )selectCKBH,WPBH,sum([num]) as Qtyfrom (select CKBH,WPBH,[num]=isnull((select sum(QMSL) from @T where checksum(CKBH,WPBH,XSDDH)=checksum(t.CKBH,t.WPBH,t.XSDDH) and RQ>t.RQ),0)from @T T)TTgroup by CKBH,WPBHorder by CKBH所影响的行数为 1 行)(所影响的行数为 1 行)(所影响的行数为 1 行)CKBH WPBH Qty ---------- ---------- ----------- CK1 WP001 130CK1 WP002 150CK2 WP001 140CK2 WP002 160(所影响的行数为 4 行) insert触发器的问题 小女子求救,有关SQL中NOT EXSITS 语句的问题~ ntext? 怎样将多个字段一样的表合成一张表?谢谢! 时间急迫!! 看帖的朋友请伸出援助之手!! 在线求助:在SQL触发器中插入ACCESS数据库?? 标准sql的bool类型怎么写 超级变态的门禁考勤系统的查询 请问能否实现两个主键表与一个外键表的关联? 从EXCEL中导入SQL SERVER数据关于布尔类型的数据老是出错! 复制:子系统加载失败,该作业已挂起!!! 求性能最佳的:求最新采购价格视图
insert into tb values('CK1','XS001','WP001', '2007-12-5', 100)
insert into tb values('CK2','XS001','WP001', '2007-12-5', 100)
insert into tb values('CK1','XS002','WP002', '2007-12-5', 100)
insert into tb values('CK2','XS002','WP002', '2007-12-5', 100)
insert into tb values('CK1','XS003','WP001', '2007-12-2', 30 )
insert into tb values('CK2','XS003','WP001', '2007-12-2', 40 )
insert into tb values('CK1','XS004','WP002', '2007-12-2', 50 )
insert into tb values('CK2','XS004','WP002', '2007-12-2', 60 )
insert into tb values('CK1','XS001','WP001', '2007-12-3', 10 )
insert into tb values('CK2','XS001','WP001', '2007-12-3', 10 )
insert into tb values('CK1','XS002','WP002', '2007-12-3', 10 )
insert into tb values('CK2','XS002','WP002', '2007-12-3', 10 )
insert into tb values('CK1','XS003','WP001', '2007-12-1', 20 )
insert into tb values('CK2','XS003','WP001', '2007-12-1', 20 )
insert into tb values('CK1','XS004','WP002', '2007-12-1', 20 )
insert into tb values('CK2','XS004','WP002', '2007-12-1', 20 )
goselect a.CKBH , a.WPBH, QMSL = sum(QMSL) from tb a where RQ = (select max(RQ) from tb where CKBH = a.CKBH and WPBH = a.WPBH) group by a.CKBH , a.WPBH order by a.WPBH,a.CKBHdrop table tb/*
CKBH WPBH QMSL
---------- ---------- -----------
CK1 WP001 100
CK2 WP001 100
CK1 WP002 100
CK2 WP002 100(所影响的行数为 4 行)
*/
from table a
where not exists(select 1 from table where a.CKBH =CKBH and a.WPBH =WPBH and a.RQ<RQ)
group by CKBH,WPBH
create table tb(CKBH varchar(10),XSDDH varchar(10),WPBH varchar(10),RQ datetime,QMSL int)
insert into tb values('CK1','XS001','WP001', '2007-12-5', 100)
insert into tb values('CK2','XS001','WP001', '2007-12-5', 100)
insert into tb values('CK1','XS002','WP002', '2007-12-5', 100)
insert into tb values('CK2','XS002','WP002', '2007-12-5', 100)
insert into tb values('CK1','XS003','WP001', '2007-12-2', 30 )
insert into tb values('CK2','XS003','WP001', '2007-12-2', 40 )
insert into tb values('CK1','XS004','WP002', '2007-12-2', 50 )
insert into tb values('CK2','XS004','WP002', '2007-12-2', 60 )
insert into tb values('CK1','XS001','WP001', '2007-12-3', 10 )
insert into tb values('CK2','XS001','WP001', '2007-12-3', 10 )
insert into tb values('CK1','XS002','WP002', '2007-12-3', 10 )
insert into tb values('CK2','XS002','WP002', '2007-12-3', 10 )
insert into tb values('CK1','XS003','WP001', '2007-12-1', 20 )
insert into tb values('CK2','XS003','WP001', '2007-12-1', 20 )
insert into tb values('CK1','XS004','WP002', '2007-12-1', 20 )
insert into tb values('CK2','XS004','WP002', '2007-12-1', 20 )
goselect a.CKBH , a.WPBH, QMSL = sum(a.QMSL) from tb a where RQ = (select max(RQ) from tb where CKBH = a.CKBH and WPBH = a.WPBH) group by a.CKBH , a.WPBH order by a.CKBH , a.WPBHdrop table tb/*
CKBH WPBH QMSL
---------- ---------- -----------
CK1 WP001 100
CK1 WP002 100
CK2 WP001 100
CK2 WP002 100(所影响的行数为 4 行)
*/
create table tb(CKBH varchar(10),XSDDH varchar(10),WPBH varchar(10),RQ datetime,QMSL int)
insert into tb values('CK1','XS001','WP001', '2007-12-5', 100)
insert into tb values('CK2','XS001','WP001', '2007-12-5', 100)
insert into tb values('CK1','XS002','WP002', '2007-12-5', 100)
insert into tb values('CK2','XS002','WP002', '2007-12-5', 100)
insert into tb values('CK1','XS003','WP001', '2007-12-2', 30 )
insert into tb values('CK2','XS003','WP001', '2007-12-2', 40 )
insert into tb values('CK1','XS004','WP002', '2007-12-2', 50 )
insert into tb values('CK2','XS004','WP002', '2007-12-2', 60 )
insert into tb values('CK1','XS001','WP001', '2007-12-3', 10 )
insert into tb values('CK2','XS001','WP001', '2007-12-3', 10 )
insert into tb values('CK1','XS002','WP002', '2007-12-3', 10 )
insert into tb values('CK2','XS002','WP002', '2007-12-3', 10 )
insert into tb values('CK1','XS003','WP001', '2007-12-1', 20 )
insert into tb values('CK2','XS003','WP001', '2007-12-1', 20 )
insert into tb values('CK1','XS004','WP002', '2007-12-1', 20 )
insert into tb values('CK2','XS004','WP002', '2007-12-1', 20 )
go--我的。
select a.CKBH , a.WPBH, QMSL = sum(a.QMSL) from tb a where RQ = (select max(RQ) from tb where CKBH = a.CKBH and WPBH = a.WPBH) group by a.CKBH , a.WPBH order by a.CKBH , a.WPBH
/*
CKBH WPBH QMSL
---------- ---------- -----------
CK1 WP001 100
CK1 WP002 100
CK2 WP001 100
CK2 WP002 100(所影响的行数为 4 行)
*/--石头的。
select CKBH,WPBH,qmsl = sum(QMSL)
from tb a
where not exists(select 1 from tb where a.CKBH =CKBH and a.WPBH =WPBH and a.RQ<RQ)
group by CKBH,WPBH
/*
CKBH WPBH qmsl
---------- ---------- -----------
CK1 WP001 100
CK2 WP001 100
CK1 WP002 100
CK2 WP002 100(所影响的行数为 4 行)
*/drop table tb
CK1 XS003 WP001 2007-12-2 30 CK1 XS002 WP002 2007-12-5 100
CK1 XS004 WP002 2007-12-2 50 CK2 XS001 WP001 2007-12-5 100
CK2 XS003 WP001 2007-12-2 40 CK2 XS002 WP002 2007-12-5 100
CK2 XS004 WP002 2007-12-2 60 仓库编号CKBH 物品编号WPBH 期末数量QMSL
CK1 WP001 130
CK1 WP002 150 CK2 WP001 140
CK2 WP002 160
上面的答案就能达到
'CK1','XS003','WP001', '2007-12-1', 20
这条为啥不加?
insert into tb values('CK1','XS001','WP001', '2007-12-5', 100)
insert into tb values('CK2','XS001','WP001', '2007-12-5', 100)
insert into tb values('CK1','XS002','WP002', '2007-12-5', 100)
insert into tb values('CK2','XS002','WP002', '2007-12-5', 100)
insert into tb values('CK1','XS003','WP001', '2007-12-2', 30 )
insert into tb values('CK2','XS003','WP001', '2007-12-2', 40 )
insert into tb values('CK1','XS004','WP002', '2007-12-2', 50 )
insert into tb values('CK2','XS004','WP002', '2007-12-2', 60 )
insert into tb values('CK1','XS001','WP001', '2007-12-3', 10 )
insert into tb values('CK2','XS001','WP001', '2007-12-3', 10 )
insert into tb values('CK1','XS002','WP002', '2007-12-3', 10 )
insert into tb values('CK2','XS002','WP002', '2007-12-3', 10 )
insert into tb values('CK1','XS003','WP001', '2007-12-1', 20 )
insert into tb values('CK2','XS003','WP001', '2007-12-1', 20 )
insert into tb values('CK1','XS004','WP002', '2007-12-1', 20 )
insert into tb values('CK2','XS004','WP002', '2007-12-1', 20 )
go
--石头的。
select CKBH,WPBH,qmsl = sum(QMSL)
from tb a
where not exists(select 1 from tb where XSDDH = a.XSDDH and a.CKBH =CKBH and a.WPBH =WPBH and a.RQ<RQ)
group by CKBH,WPBH
/*
CKBH WPBH qmsl
---------- ---------- -----------
CK1 WP001 130
CK2 WP001 140
CK1 WP002 150
CK2 WP002 160
(所影响的行数为 4 行)
*/drop table tb
go
declare @T table (CKBH varchar(10),XSDDH varchar(10),WPBH varchar(10),RQ datetime,QMSL int)
insert into @T values('CK1','XS001','WP001', '2007-12-5', 100)
insert into @T values('CK2','XS001','WP001', '2007-12-5', 100)
insert into @T values('CK1','XS002','WP002', '2007-12-5', 100)
insert into @T values('CK2','XS002','WP002', '2007-12-5', 100)
insert into @T values('CK1','XS003','WP001', '2007-12-2', 30 )
insert into @T values('CK2','XS003','WP001', '2007-12-2', 40 )
insert into @T values('CK1','XS004','WP002', '2007-12-2', 50 )
insert into @T values('CK2','XS004','WP002', '2007-12-2', 60 )
insert into @T values('CK1','XS001','WP001', '2007-12-3', 10 )
insert into @T values('CK2','XS001','WP001', '2007-12-3', 10 )
insert into @T values('CK1','XS002','WP002', '2007-12-3', 10 )
insert into @T values('CK2','XS002','WP002', '2007-12-3', 10 )
insert into @T values('CK1','XS003','WP001', '2007-12-1', 20 )
insert into @T values('CK2','XS003','WP001', '2007-12-1', 20 )
insert into @T values('CK1','XS004','WP002', '2007-12-1', 20 )
insert into @T values('CK2','XS004','WP002', '2007-12-1', 20 )select
CKBH,WPBH,sum([num]) as Qty
from
(select
CKBH,WPBH,[num]=isnull((select sum(QMSL) from @T where checksum(CKBH,WPBH,XSDDH)=checksum(t.CKBH,t.WPBH,t.XSDDH) and RQ>t.RQ),0)
from
@T T
)TT
group by CKBH,WPBH
order by CKBH所影响的行数为 1 行)
(所影响的行数为 1 行)
(所影响的行数为 1 行)CKBH WPBH Qty
---------- ---------- -----------
CK1 WP001 130
CK1 WP002 150
CK2 WP001 140
CK2 WP002 160(所影响的行数为 4 行)