首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Sql的一个常见有关问题l

2012-09-09 
Sql的一个常见问题lCardADateATime0020012012-09-0213:03:000020012012-09-0214:23:007690412012-09-0213:

Sql的一个常见问题l
CardADate ATime  
0020012012-09-0213:03:00  
0020012012-09-0214:23:00
7690412012-09-0213:16:00
7691012012-09-0214:23:00  
------------------------------------------------
要的结果是
CardADate ATime Mark
0020012012-09-0213:03:00 进  
0020012012-09-0214:23:00 出
7690412012-09-0213:16:00 进
7691012012-09-0214:23:00 进
-------------------------------------------
就是在原始数据上加一列,当002001只有一行的话显示为进,有第二行的话显示为出,这个SQL语句怎么写?

[解决办法]

SQL code
--> 测试数据:[tb]IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]GOCREATE TABLE [tb]([Card] VARCHAR(6),[ADate] DATETIME,[ATime] time)INSERT [tb]SELECT '002001','2012-09-02','13:03:00' UNION ALLSELECT '002001','2012-09-02','14:23:00' UNION ALLSELECT '769041','2012-09-02','13:16:00' UNION ALLSELECT '769101','2012-09-02','14:23:00'GO--> 开始查询:select [Card],       [ADate],       [ATime],       case when rn=1 then'进' else '出' end as Markfrom (SELECT *,rn=row_number() over(partition by [Card] order by [ADate],[ATime]) FROM [tb])a--------------------------------------------->结果集/*Card   ADate                   ATime            Mark-----------------------------------------------------002001 2012-09-02 00:00:00.000 13:03:00          进002001 2012-09-02 00:00:00.000 14:23:00          出769041 2012-09-02 00:00:00.000 13:16:00          进769101 2012-09-02 00:00:00.000 14:23:00          进*/
[解决办法]
LS就是MSSQL的
[解决办法]
探讨

Ls二位都是ORACLE的方式呀?有没SQL SERVER的?求解!

热点排行