请教一下各位大牛这样的SQL 应该怎么实现

kevin_long 2010-02-02 09:56:26


RmNum Day Stdt_tm Eddt_tm 早Zao 中Zhong 晚Wan
4 12 14:55 10:19 0 1 0
4 13 01:20 03:20 0 0 1
6 13 14:46 10:10 0 1 0
8 14 11:26 10:19 0 1 0
8 15 11:26 10:21 0 1 1
9 16 15:26 14:41 0 1 1
11 16 13:06 10:19 1 1 0
11 18 11:31 11:44 1 1 0
12 19 11:56 15:45 0 1 1
12 20 15:45 15:49 0 1 0

结果:

表头为每个月 的 天数
每天分为早中晚 若为0则记为 – 为1 则记为*

RmNum 1号 2号 ……… 12号 13号 14号 15号 16号 ………
4  ---  ---    -*-  --*  ---  ---  ---  ---
6  ---  ---  ---  ---  -*-  ---  ---  ---  ---
8            -*-  -**    
9                  
11                  
12                  
...全文
102 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevin_long 2010-02-02
  • 打赏
  • 举报
回复
请教一下

htl258
(Tony)

那 12号 之前的日期 能补出来吗?
htl258_Tony 2010-02-02
  • 打赏
  • 举报
回复
--> 生成测试数据表:tb

IF NOT OBJECT_ID('[tb]') IS NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb]([RmNum] INT,[Day] INT,[Stdt_tm] NVARCHAR(10),[Eddt_tm] NVARCHAR(10),[Zao] INT,[Zhong] INT,[Wan] INT)
INSERT [tb]
SELECT 4,12,'14:55','10:19',0,1,0 UNION ALL
SELECT 4,13,'01:20','03:20',0,0,1 UNION ALL
SELECT 6,13,'14:46','10:10',0,1,0 UNION ALL
SELECT 8,14,'11:26','10:19',0,1,0 UNION ALL
SELECT 8,15,'11:26','10:21',0,1,1 UNION ALL
SELECT 9,16,'15:26','14:41',0,1,1 UNION ALL
SELECT 11,16,'13:06','10:19',1,1,0 UNION ALL
SELECT 11,18,'11:31','11:44',1,1,0 UNION ALL
SELECT 12,19,'11:56','15:45',0,1,1 UNION ALL
SELECT 12,20,'15:45','15:49',0,1,0
GO
--SELECT * FROM [tb]

-->SQL查询如下:
declare @s varchar(8000)
select @s='select [RmNum]'
select @s=@s+',max(case [Day] when '+LTRIM([day]) +' then [Stdt_tm] else '''' end)['+LTRIM([day])+'日S]'
+',max(case [Day] when '+LTRIM([day]) +' then [Eddt_tm] else '''' end)['+LTRIM([day])+'日E]'
--......其它的自己举一反三
from tb
group by Day
select @s=@s+' from tb group by RmNum'
exec (@s)
/*
RmNum 12日S 12日E 13日S 13日E 14日S 14日E 15日S 15日E 16日S 16日E 18日S 18日E 19日S 19日E 20日S 20日E
----------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
4 14:55 10:19 01:20 03:20
6 14:46 10:10
8 11:26 10:19 11:26 10:21
9 15:26 14:41
11 13:06 10:19 11:31 11:44
12 11:56 15:45 15:45 15:49

(6 行受影响)
*/
kevin_long 2010-02-02
  • 打赏
  • 举报
回复
那怎么把没有的列补齐呢?SQL 怎么写
--小F-- 2010-02-02
  • 打赏
  • 举报
回复
行转列?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧