标题:sql server对比查询
只看楼主
njyhd
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-11-18
结帖率:0
已结贴  问题点数:20 回复次数:6 
sql server对比查询
表名T ,字段如下
ID(自动)  LP(楼盘)   LDH(楼栋)  DY(单元)  FJH(房间)  DT(搜索日期)           ZT(状态)
1            楼盘一         1#                 甲              101    2010-5-1 7:00:00      是
2            楼盘一         1#                 甲              101    2010-5-3 2:00:00      否
3            楼盘一         1#                 乙              201    2010-5-1 5:00:00      是
4            楼盘一         1#                 乙              201    2010-5-3 1:00:00      是
5            楼盘一         2#                 乙              101    2010-5-1 1:00:00      否
6            楼盘一         2#                 乙              101    2010-5-3 1:00:00      是
7            楼盘二         3#                 甲              101    2010-5-1 1:00:00      是
8            楼盘二         3#                 甲              101    2010-5-3 1:00:00      否
9            楼盘二         3#                 甲              101    2010-5-4 1:00:00      是

要求比较同一间房间在两天的状态,如果状态相同则不查出,如果状态不同则查出日期靠后的房间信息。如现在选定10年5月1号和3号则应查出的结果如下:
ID(自动)  LP(楼盘)   LDH(楼栋) DY(单元) FJH(房间) DT(搜索日期)          ZT(状态)
2            楼盘一     1#             甲            101          2010-5-3                 否
6            楼盘一     2#             乙            101          2010-5-3                 是
8            楼盘二     3#             甲            101          2010-5-3                 否

请哪位高手指点刚学数据库的我,谢谢!
搜索更多相关主题的帖子: sql server 查询 
2010-11-18 09:18
tangyunzhong
Rank: 5Rank: 5
来 自:广西
等 级:职业侠客
威 望:4
帖 子:97
专家分:364
注 册:2010-7-28
得分:20 
回复 楼主 njyhd
在ID可以不显示的情况如下:
select  LP,LDH,DY,FJH,DT,ZT FROM (
select LP,LDH,DY,FJH,SUBSTRING(CONVERT (CHAR(20), DT, 20),1,10) as 'DT',ZT FROM 表名 WHERE  SUBSTRING(CONVERT (CHAR(20), DT, 20),1,10) IN('2010-5-1','2010-5-3')
group by lp,ldh,dy,fjh,zt
having count(*)=2) A
WHERE DT='靠后日期如2010-5-3格式'
2010-11-18 10:26
njyhd
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-11-18
得分:0 
回复 2楼 tangyunzhong
谢谢指点,还有个条件就是如果一个房间找不到对应的房间则也显示出来,如对比5月1号与5月3号的数据,5月1号有间房在5月3号找不到对应的房间,所以5月1号的这间房就需要显示出来。是不是要在这条SQL语句上加点条件
2010-11-18 14:56
tangyunzhong
Rank: 5Rank: 5
来 自:广西
等 级:职业侠客
威 望:4
帖 子:97
专家分:364
注 册:2010-7-28
得分:0 
回复 3楼 njyhd
在上面的语句进行修改就可以了,也就是在1点有而在3号没有是这个意思吧!
这个条件是容易实现的,相信你应该可以想得出来!
实在不行在帮你好吗!
多想想是对你有好处的
2010-11-18 21:34
njyhd
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-11-18
得分:0 
回复 4楼 tangyunzhong
这个sql语句我运行了次,查看结果好像并没有查出状态不同的数据,只查出了后一天的数据,但是我对比查出的结果,后一天与前一天的状态相同的数据也显示出来了,DT应该放到group by里面吧,麻烦您多指点啊,谢谢!
2010-11-19 09:37
tangyunzhong
Rank: 5Rank: 5
来 自:广西
等 级:职业侠客
威 望:4
帖 子:97
专家分:364
注 册:2010-7-28
得分:0 
回复 5楼 njyhd
你现在不就是要查询状态不一样的最后日期靠后的信息吗?
2010-11-19 12:47
njyhd
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-11-18
得分:0 
回复 6楼 tangyunzhong
是这样的,再加上一个如果两天没有对应的房间,则查询出。即第一天有个501房间,第二天记录中没有501,则第一天的这个501记录也要查出来,即不一定查出的记录就是日期靠后的记录。我在查询分析器中执行了你给的答案,从结果看来好像状态相同的也查询出来了。
2010-11-19 14:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-326094-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.683224 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved