作者:心只为你跳国 | 来源:互联网 | 2023-09-17 19:05
在停车场系统中有jcjl这张表,里面有jqh(机器号),kh(卡号),xm(姓名),images(图像),jrsj(进入时间)我现在做了一个jcbb(进出报表)里面主要的字段有kh(卡号),x
在停车场系统中有jcjl这张表,里面有jqh(机器号),kh(卡号),xm(姓名),images(图像),
jrsj(进入时间)
我现在做了一个jcbb(进出报表)里面主要的字段有kh(卡号),xm(姓名),images1(进门图
像),images2(出门图像),jcrq(进场日期),ccrq出场日期)。
我想根据jcjl表里面的机器号统计出报表来,放在jcbb中形成如下的报表该怎么做:
jcjl表:
kh xm jqh images jrrq
1 张三 1 2.jpg 2008-3-5 14:23:21
1 张三 2 3.jpg 2008-3-5 15:23:21
1 张三 2 4.jpg 2008-3-6 19:25:47
2 李四 1 5.jpg 2008-3-5 14:23:10
2 李四 2 6.jpg 2008-3-5 15:30:00
jcbb
kh xm images1 images2 jcrq ccrq
1 张三 2.jpg 3.jpg 2008-3-5 14:23:21 2008-3-5 15:23:21
2 李四 5.jpg 6.jpg 2008-3-5 14:23:10 008-3-5 15:30:00
如果进门或出门没有打卡的话如jcjl表的第三条记录没有进门记录,则在jcbb中不统计或者在
jcbb中将进门信息留空。这样可以实现吗?
11 个解决方案
楼主你的思路有问题,你的想法根本就不可以实现,如果第一张表里一个人出现了奇数次你怎么知道他是出门没有打卡,还是进门没有打卡呢?
还有就是你也没有明确的规则来划分进门和出门的标准,完全凭的是你主观想法,建议不要把精力花在如何组织查询语句上了,还是好好设计一下
你的表结构吧,时间就是生命。
如果你的jqh是理解为进出类别的话,还是可以的。
即1表示进,2表示出。如果不是,有楼上说的问题,没有办法知道是出还是进。
jqh就是进出类别啊,jqh=1就是进门,jqh=2就代表出门啊.
可以不用临时表,因为同名的时间列不重复,用count计数就可以了,但写法复杂了,用了临时表简化写法。
CREATE TABLE tb(kh INT, xm VARCHAR(10),jqh INT,images VARCHAR(20),jrrq DATETIME)
GO
INSERT tb SELECT 1, '张三', 1 ,'2.jpg' ,'2008-3-5 14:23:21'
UNION ALL SELECT 1 , '张三' , 2 , '3.jpg' ,'2008-3-5 15:23:21'
UNION ALL SELECT 1 , '张三' ,2 , '4.jpg' ,'2008-3-6 19:25:47'
UNION ALL SELECT 2 , '李四' ,1, '5.jpg' , '2008-3-5 14:23:10'
UNION ALL SELECT 2 ,'李四' ,2, '6.jpg', '2008-3-5 15:30:00'
UNION ALL SELECT 2 ,'李四', 1 , '7.jpg', '2008-3-6 00:00:00'
UNION ALL SELECT 2 ,'李四', 1 , '8.jpg', '2008-3-7 00:00:00'
UNION ALL SELECT 2 ,'李四', 2 , '9.jpg', '2008-3-8 00:00:00'
GO
SELECT identity(int) ID ,* INTO # FROM tb
SELECT identity(int) NID,kh,xm,jqh,images,jrrq INTO #1 FROM # a
WHERE EXISTS(SELECT 1 FROM # WHERE kh=a.kh AND id=a.id + CASE WHEN a.jqh=1 THEN 1 ELSE -1 END and jqh!=a.jqh )
SELECT a.kh,a.xm,a.images image1,b.images image2,a.jrrq jrcq,b.jrrq ccrq FROM #1 a
INNER JOIN #1 b
ON a.nid=b.nid-1
WHERE a.nid%2=1
GO
DROP TABLE #,#1
GO
DROP TABLE tb
怎么我编译不通过了
服务器: 消息 8108,级别 16,状态 1,行 1
无法使用 SELECT INTO 语句向表 '#' 中添加标识列,该表中已有继承了标识属性的列 'xh'。