SQL如何将多行数据合并成一行显示

w362435819 2012-09-12 01:29:51
工作时间表:
人员ID 日期 工作时间
1 8/1 8
1 8/2 8
1 8/3 8
1 8/4 8
1 8/5 8
1 8/6 8
1 8/7 8
员工表:
ID 姓名
1 张三

显示成:
人员ID 工作时间1 工作时间2 工作时间3 工作时间4 工作时间5 工作时间6 工作时间7
张三 8 8 8 8 8 8 8
...全文
3385 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
w362435819 2012-09-17
  • 打赏
  • 举报
回复
如果我现在要查8月一号到8月5号之间的,其他天数的不要该怎么写?
汤姆克鲁斯 2012-09-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

检查 @@servername 和 serverproperty( 'servername ') 是否一致
[/Quote]
发错地方了 不好意思
汤姆克鲁斯 2012-09-12
  • 打赏
  • 举报
回复
检查 @@servername 和 serverproperty( 'servername ') 是否一致
汤姆克鲁斯 2012-09-12
  • 打赏
  • 举报
回复
--> 测试数据:[ta]
IF OBJECT_ID('[ta]') IS NOT NULL DROP TABLE [ta]
GO
CREATE TABLE [ta]([人员ID] INT,[日期] VARCHAR(3),[工作时间] INT)
INSERT [ta]
SELECT 1,'8/1',8 UNION ALL
SELECT 1,'8/2',8 UNION ALL
SELECT 1,'8/3',8 UNION ALL
SELECT 1,'8/4',8 UNION ALL
SELECT 1,'8/5',8 UNION ALL
SELECT 1,'8/6',8 UNION ALL
SELECT 1,'8/7',8
--------------开始查询--------------------------

--> 测试数据:[tb]
IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]
GO
CREATE TABLE [tb]([ID] INT,[姓名] VARCHAR(4))
INSERT [tb]
SELECT 1,'张三'
--------------开始查询--------------------------
DECLARE @sql VARCHAR(max)
SELECT @sql=ISNULL(@sql+',','')+QUOTENAME([日期]) FROM [ta]
GROUP BY [日期]
EXEC('
SELECT * FROM
(
SELECT [姓名], [工作时间],[日期] FROM [ta] LEFT JOIN [tb] ON ta.[人员ID]=tb.id
) a
PIVOT(MAX([工作时间]) FOR [日期] IN ('+@sql+')) pit')
/*
姓名 8/1 8/2 8/3 8/4 8/5 8/6 8/7
张三 8 8 8 8 8 8 8
*/
KevinLiu 2012-09-12
  • 打赏
  • 举报
回复
select ID,
sum(case 日期 when '8/1' then 工作时间else 0 end) as DAY1,
sum(case 日期 when '8/2' then 工作时间else 0 end) as DAY2 ,
sum(case 日期 when '8/3' then 工作时间else 0 end) as DAY3,
sum(case 日期 when '8/4' then 工作时间else 0 end) as DAY4,
sum(case 日期 when '8/5' then 工作时间else 0 end) as DAY5,
sum(case 日期 when '8/6' then 工作时间else 0 end) as DAY6,
sum(case 日期 when '8/7' then 工作时间 else 0 end) as DAY7
from SC1 group by ID

ID DAY1 DAY2 DAY3 DAY4 DAY5 DAY6 DAY7
----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
1 8 8 8 8 8 8 8

(1 row(s) affected)


2005以后可以用PIVOT

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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