【发布时间】:2017-04-13 10:12:37
【问题描述】:
sql pivot with dynamic columns 我已在此处附加了我对表和数据的查询,
/****** Object: Table [dbo].[Company] Script Date: 13/04/2017 3:37:15 PM ******/
CREATE TABLE [dbo].[Company](
[Comp ID] [int] NULL,
[Company Name] [nvarchar](50) NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Designation] Script Date: 13/04/2017 3:37:15 PM ******/
CREATE TABLE [dbo].[Designation](
[Design ID] [int] NULL,
[Comp ID] [int] NULL,
[Designation] [nvarchar](50) NULL,
[Design Code] [int] NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Employee] Script Date: 13/04/2017 3:37:15 PM ******/
CREATE TABLE [dbo].[Employee](
[Emp ID] [int] NULL,
[Comp ID] [int] NULL,
[Design ID] [int] NULL,
[Employee Name] [nvarchar](50) NULL,
[Employee Code] [int] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[Company] ([Comp ID], [Company Name]) VALUES (1, N'Company 1')
GO
INSERT [dbo].[Company] ([Comp ID], [Company Name]) VALUES (2, N'Company 2')
GO
INSERT [dbo].[Designation] ([Design ID], [Comp ID], [Designation], [Design Code]) VALUES (1, 1, N'CEO', 2)
GO
INSERT [dbo].[Designation] ([Design ID], [Comp ID], [Designation], [Design Code]) VALUES (2, 1, N'HR', 1)
GO
INSERT [dbo].[Designation] ([Design ID], [Comp ID], [Designation], [Design Code]) VALUES (3, 2, N'CEO', 1)
GO
INSERT [dbo].[Designation] ([Design ID], [Comp ID], [Designation], [Design Code]) VALUES (3, 2, N'Developer', 2)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (1, 1, 1, N'Test emp1', 101)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (2, 1, 1, N'Test emp2', 102)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (3, 1, 2, N'Test emp3', 103)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (4, 1, 2, N'Test emp4', 104)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (5, 1, 1, N'Test emp5', 105)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (6, 1, 2, N'Test emp6', 106)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (7, 2, 1, N'Test emp7', 107)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (8, 2, 1, N'Test emp8', 108)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (9, 2, 2, N'Test emp9', 109)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (10, 2, 2, N'Test emp10', 110)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (11, 2, 1, N'Test emp11', 111)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (12, 2, 1, N'Test emp12', 112)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (13, 1, 1, N'Test emp13', 113)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (14, 1, 2, N'Test emp14', 114)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (15, 2, 1, N'Test emp15', 115)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (16, 2, 2, N'Test emp16', 116)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (17, 1, 1, N'Test emp17', 117)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (18, 1, 2, N'Test emp18', 118)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (19, 2, 1, N'Test emp19', 119)
GO
INSERT [dbo].[Employee] ([Emp ID], [Comp ID], [Design ID], [Employee Name], [Employee Code]) VALUES (20, 2, 2, N'Test emp20', 120)
GO
我有 3 个表,分别是 Company、Designation、Employee
我需要一个查询来选择最新的 4 名员工(按员工代码排序)为所有公司按设计代码的降序排序,然后按员工代码的降序排序,并为每个公司选择前 4 条记录 并且结果需要像这样旋转
例如:
CompanyID Emp1 Emp2 Emp3 Emp4
----------
1 118 114 106 103
我尝试过类似的东西,
select
emp.[Comp ID],
emp.[Design ID],
emp.[Emp ID],
emp.[Employee Code],
design.[Design Code],
emp.[Employee Code],
comp.[Company Name],
design.Designation,
emp.[Employee Name]
from Employee emp
join Designation design on design.[Design ID]=emp.[Design ID]
join Company comp on comp.[Comp ID]=emp.[Comp ID]
order by comp.[Comp ID] desc, design.[Design Code] desc, emp.[Employee Code] desc
我需要每个公司的前 4 名员工分别为 emp1、emp2、emp3 和 emp4按公司代码排序,然后按员工代码排序
【问题讨论】:
-
您自己尝试过什么吗?这是一个家庭作业问题吗? SO 不是一个为我做我的工作平台...
-
更新了我的问题,请参考所附链接我需要类似的查询,但要按设计代码然后员工代码排序
标签: sql sql-server-2008