一个按日期排序输出的查询方法

本文提供了一种方法,通过SQL代码将出差信息整理成表格形式,清晰展示人员、出差地点及日期,适用于5月的出差安排。同时,介绍了如何使用辅助表进行日期与地点的行列转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

T出差:  日期,人员,地点,返回日期         0506  A    上海  0506         0508  A    北京  0510         0501  B    河北  0508         0520  C    南京  0610 ......... 我想得到一个表格: 序号,姓名,01,02,03,04,05,06,07,08, 09,  10....20....31 (指日期) 01  A                      上海    北京 北京 北京      02  B    河北 河北 河北 ....        河北                            03  C                                                南京 南京...南京 即得到一个直观的在一个月中人员出差地点的表格,无地点为空。                 

 

 

以5月為例

SQL code
if not object_id('T') is null drop table T Go Create table T([日期] nvarchar(4),[人员] nvarchar(1),[地点] nvarchar(2),[返回日期] nvarchar(4)) Insert T select N'0506',N'A',N'上海',N'0506' union all select N'0508',N'A',N'北京',N'0510' union all select N'0501',N'B',N'河北',N'0508' union all select N'0520',N'C',N'南京',N'0610' Go if object_id('Tempdb..#') is not null drop table # select top 10 ID=identity(int,1,1) into # from sysobjects--輔助表 declare @s nvarchar(4000),@i int select @s='',@i=31 while @i>0 select @s=','+quotename(@i)+N'=max(case when day([日期])='+rtrim(@i)+N' then [地点] else '''' end)'+@s,@i=@i-1 exec('select [人员]'+@s+' from (Select dateadd(d,t2.ID,cast(''08''+[日期] as datetime)) [日期],[人员],[地点] from T join # t2 on dateadd(d,t2.ID,cast(''08''+[日期] as datetime))<=cast(''08''+[返回日期] as datetime))Tab group by [人员]') 人员 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- A 北京 北京 B 河北 河北 河北 河北 河北 河北 河北 C 南京 南京 南京 南京 南京 南京 南京 南京 南京 南京 (3 個資料列受到影響)
以上需要輔助表.. 行列互轉例子: http://topic.youkuaiyun.com/u/20080614/17/22e73f33-f071-46dc-b9bf-321204b1656f.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值