Sql server 请帮助解决此SQL Server问题

Sql server 请帮助解决此SQL Server问题,sql-server,Sql Server,请帮助解决此SQL Server问题。我有一个表employee以及下面列出的字段(请参见粗体的employee表)。我希望得到如下所示的结果(请参见粗体显示的结果) 员工表: Name Age Salary Employee Type Employed Date Name Age Salary Employee_Type Date_Hired Employee 1 24 24,000.00 Staff January 15, 2

请帮助解决此SQL Server问题。我有一个表employee以及下面列出的字段(请参见粗体的employee表)。我希望得到如下所示的结果(请参见粗体显示的结果)

员工表:

Name
Age
Salary
Employee Type
Employed Date
Name        Age   Salary      Employee_Type   Date_Hired
Employee 1  24    24,000.00   Staff           January 15, 2009
Employee 2  33    32,000.00   Staff           February 1, 2005
Employee 3  23    75,000.00   Consultant      March 20, 2002
          Employee 1           Employee 2           Employee 3
Age           24                    33                  23
Salary        24,000.00             32,000.00           75,000.00
Employee_Type Staff                 Staff               Consultant
Date_Hired    January 15, 2009      February 1, 2005    March 20, 2002
员工数据:

Name
Age
Salary
Employee Type
Employed Date
Name        Age   Salary      Employee_Type   Date_Hired
Employee 1  24    24,000.00   Staff           January 15, 2009
Employee 2  33    32,000.00   Staff           February 1, 2005
Employee 3  23    75,000.00   Consultant      March 20, 2002
          Employee 1           Employee 2           Employee 3
Age           24                    33                  23
Salary        24,000.00             32,000.00           75,000.00
Employee_Type Staff                 Staff               Consultant
Date_Hired    January 15, 2009      February 1, 2005    March 20, 2002
结果:

Name
Age
Salary
Employee Type
Employed Date
Name        Age   Salary      Employee_Type   Date_Hired
Employee 1  24    24,000.00   Staff           January 15, 2009
Employee 2  33    32,000.00   Staff           February 1, 2005
Employee 3  23    75,000.00   Consultant      March 20, 2002
          Employee 1           Employee 2           Employee 3
Age           24                    33                  23
Salary        24,000.00             32,000.00           75,000.00
Employee_Type Staff                 Staff               Consultant
Date_Hired    January 15, 2009      February 1, 2005    March 20, 2002

多亏了阿尔比·巴格达尼亚:)

这里有一种方法。UNPIVOT用于将列名转移到行,然后使用该列名(现在是行)的标准分组来为每个员工透视名称/值组合。请注意,使用unpivot时,列应具有相同的数据类型,这就是为什么会出现cast和convert。这种方法唯一的缺点是员工姓名是硬编码的,但除非使用动态数据透视,否则这总是一个问题。然而,由于您提到您只有大约10名员工需要corsstab,所以这应该不是问题。以下是脚本:

select
    unp.ColumnName,
    max(case when Name = 'Employee 1' then Value else null end) [Employee 1],
    max(case when Name = 'Employee 2' then Value else null end) [Employee 2],
    max(case when Name = 'Employee 3' then Value else null end) [Employee 3]
    from 
    (
        select 
            Name, cast(Age as varchar(20)) Age, 
            cast(Salary as varchar(20)) Salary, 
            cast(Employee_Type as varchar(20)) Employee_Type,
            convert(varchar(20), Employed_Date, 106) Employed_Date  
            from dbo.Employee
    ) src
    unpivot 
    (
        Value for ColumnName in (
            [Age], [Salary], [Employee_Type], [Employed_Date])
    ) unp
    group by unp.ColumnName;

-- the above produces something like this for 
-- the data consistent with the sample in question:

ColumnName           Employee 1           Employee 2           Employee 3
-------------------- -------------------- -------------------- -----------
Age                  24                   33                   23
Employed_Date        15 Jan 2009          01 Feb 2005          20 Mar 2002
Employee_Type        Staff                Staff                Consultant
Salary               24000.00             32000.00             75000.00
多亏了奥列格。:)


另一个动态解决方案升级了Oleg的解决方案

这是可以做到的,但当您添加员工时,您会添加列,如果没有动态SQL,SQL就不能满足这一要求。就个人而言,我会在报表、客户机代码或Access/Excel pivotsgbn中这样做——这只是一个示例。员工不需要数百条记录。它最多只有10条记录。在这个问题上,我将原来的表格替换为Employee,以便有一个清晰的视角@Ocaso Protal-如果我把它放在这里,你会解决它吗?我试着提出这个问题只是为了得到一些想法或其他方法来解决这个问题。我不是一个枢轴专家,所以我可能不会回答你的问题。但经验表明,当你发布到目前为止尝试过的内容时,你会得到答案。也许您的代码中只有一个小错误。好的,谢谢。所以继续关注这个问题,也许有人会回答这个问题。或者,一旦我解决了问题,我会在这里发布我的答案。任何其他解决方案都将受到高度赞赏。:)