大家好,今天在做查询的时候遇到一个问题,自己是了很多遍弄不出来,特来求救,
比如一张表保存图书的进出,图书可能是一本,可能是一箱,一箱书有先申请来拿,可同意,可拒绝,如果那箱书不存在管理员肯定会拒绝申请的,或别的问题,
每一次操作操作一次数据库,一箱书里面有多少本书就插入多少条数据,箱子ID相同,和创建这次事件的事件相同。
但是同一个箱子id可能,有同意的状态,有拒绝的状态,有正在申请的状态,但是肯定时间是不对的,
状态0代表申请,1代表同意,2代表拒绝,现在需要做的事相同boxid,相同createtime,相同status显示为一条,
但是同一箱书拒绝过多次也作为一条,并显示已经拒绝了几次,同理同意过多少次也统计出同意过多少次,并以一条显示,
MS SQL
比如一张表保存图书的进出,图书可能是一本,可能是一箱,一箱书有先申请来拿,可同意,可拒绝,如果那箱书不存在管理员肯定会拒绝申请的,或别的问题,
每一次操作操作一次数据库,一箱书里面有多少本书就插入多少条数据,箱子ID相同,和创建这次事件的事件相同。
但是同一个箱子id可能,有同意的状态,有拒绝的状态,有正在申请的状态,但是肯定时间是不对的,
状态0代表申请,1代表同意,2代表拒绝,现在需要做的事相同boxid,相同createtime,相同status显示为一条,
但是同一箱书拒绝过多次也作为一条,并显示已经拒绝了几次,同理同意过多少次也统计出同意过多少次,并以一条显示,
MS SQL
select boxid,createtime,boxstatus,count(1) times
from tb
group by boxid,createtime,boxstatus
这样?
(select count(1) from tablename where boxid=t.boxid and boxstatus=0) as 申请次数,
(select count(1) from tablename where boxid=t.boxid and boxstatus=1) as 同意次数,
(select count(1) from tablename where boxid=t.boxid and boxstatus=2) as 拒绝次数
from tablename t
就像如果能把null的以时间为条件相同就填充进去就好了。
我自己查询了只填充了一条,如果能根据时间,boxid,status填充另外两条就好了,
就是先分组,然后以分组数据为标准拿到分组中的其中一条详细信息,呃,语文似乎不太好,不知道版主理解没。
[TID] [uniqueidentifier] NULL,
[BOXID] [nvarchar](50) NULL,
[BOOKID] [uniqueidentifier] NULL,
[StudentName] [nvarchar](50) NULL,
[CreateTime] [datetime] NULL,
[BoxStatus] [int] NULL
) ON [PRIMARY]insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('1234-OD-20130628095548','yml','2013-06-28 09:56:04.187',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('1234-OD-20130628095548','yml','2013-06-28 09:56:04.187',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('1234-OD-20130628095548','yml','2013-06-28 09:56:04.187',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('1234-OD-20130628095548','yml','2013-06-28 09:56:57.800',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('1234-OD-20130628095548','yml','2013-06-28 09:56:57.800',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('1234-OD-20130628095548','yml','2013-06-28 09:56:57.800',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('1234-OD-20130628095548','yml','2013-06-28 10:03:05.907',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('1234-OD-20130628095548','yml','2013-06-28 10:03:05.907',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('1234-OD-20130628095548','yml','2013-06-28 10:03:05.907',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 16:48:10.037',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 16:48:10.037',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 16:51:46.423',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 16:51:46.423',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 17:11:33.970',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 17:11:33.970',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 17:14:13.410',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 17:14:13.410',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 17:22:01.160',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 17:22:01.160',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 17:30:28.927',0)
insert TestTable(BOXID,StudentName,CreateTime,BoxStatus) values ('doee-OD-20130618163055','ddzz1.com','2013-06-18 17:30:28.927',0)