如何将行数据转换为列数据?

| 我有一个简单的数据表,需要将其从行数据转换为列数据。例如,让我创建一个简单的雇员表: 我需要使用上面的sql表创建一个结构如下的并行比较报告: 有人可以使用上面的示例表向我显示sql代码吗?还是可以使用内置的ASP.net或DevExpress控件自动完成? 您的反馈总是值得赞赏的! 谢谢!     
已邀请:
使用SQL:
WITH FieldValueCte AS(      
SELECT  Name,
        \'Department\' Field,
        Department Value
FROM    Table1  UNION ALL
SELECT  Name,
        \'Sex\' Field,
        Sex Value
FROM    Table1  UNION ALL
SELECT  Name,
        \'HireDate\' Field,
        HireDate Value
FROM    Table1  UNION ALL
SELECT  Name,
        \'Salary\' Field,
        Salary Value
FROM    Table1  UNION ALL
SELECT  Name,
        \'Comments\' Field,
        Comments Value
FROM    Table1)

SELECT [Field], [John Doe], [Jane Smith], [Peter Parker], [Jessica James]
FROM
(SELECT Field, Name, Value
    FROM FieldValueCte) AS SourceTable
PIVOT
(
MIN(Value)
FOR Name IN ([John Doe], [Jane Smith], [Peter Parker], [Jessica James])
) AS PivotTable;
    
您正在寻找的是“枢纽”功能。 您可以在SQL内部手动进行操作,但看起来devexpress对此也有控件... http://www.devexpress.com/Products/NET/Controls/ASP/Pivot_Grid/ -编辑- 就像上面发表的评论者一样,这是对SQL Server中数据透视函数的介绍...造成这一棘手的原因是,除非您确切地知道哪些值将构成您的列,否则您将必须使用动态SQL来完成。建立枢纽。 因为在SQL中做起来有些棘手,所以我会尽量坚持使用DevExpress,因为您已经拥有了它。 我认为,如果要将多个数据点添加到数据透视表网格,则看起来会像您期望的那样。这是DevExpress的屏幕截图,类似于您正在寻找的... 这是显示此技术的页面...就您而言,您可以只执行\“总计\”,而不是行分组,然后隐藏该列...     
这里提供解决方案 http://www.aspsnippets.com/Articles/Rotate-ASPNet-GridView---Convert-GridView-Columns-to-Rows-and-Rows-to-Columns.aspx     

要回复问题请先登录注册