如何在SQL Server 2008中进行转置矩阵 [英] How to do transpose matrix in SQL Server 2008

查看:124
本文介绍了如何在SQL Server 2008中进行转置矩阵的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



如何以转置矩阵格式显示数据。



用于以下列格式显示数据的第一个SQL查询 -



  DECLARE   @ Category   AS  (ID  INT  ,类别 NVARCHAR  100 ),PlanValue  DECIMAL  6  2 ),ActValue  DECIMAL  6  2 ))

DECLARE @ tblCnt INT @row INT

DECLARE @cols AS NVARCHAR (MAX),< span class =code-sdkkeyword> @ catcols NVARCHAR (max),
@ query AS NVARCHAR (MAX)

INSERT INTO @ Category (ID,Category,PlanValue)
SELECT l.ID,l.Lookup_Value,Sum(pg.PG_TotalAntExend * pg.PG_PercMadeInOman)/ 100 AS PlanValue
FROM TR_ICV_PlanningGoods pg
INNER JOIN 查找l ON l.ID = pg.PG_category AND l.Lookup_Type LIKE ' 产品列表'

left 外部 join TM_Supplier_Category sc on sc.SC_SupplierCategoryID = pg.SC_SupplierCategoryID
WHERE sc.SC_SupplierCategoryID = 1

GROUP BY l.Lookup_Value,l.ID

更新 @ Category SET C.ActValue = PROD.actsumval FROM @ Category C INNER JOIN
SELECT p.prod_category AS ID,SUM(p.prod_perc_madeinoman )< span class =code-keyword> AS actsumval FROM TR_ICV_Product p

left outer join TM_Supplier_Category sc on sc.SC_SupplierCategoryID = p.mio_id
其中 sc.SC_SupplierCategoryID = 1

GROUP BY p.prod_category)PROD ON PROD.ID = C.ID

选择 * 来自 @ Category







OutPut

表1-

ID 类别 PlanValue 实际值

 2527钻孔96.16 8.00 
2528焊接45.00 30.00





Resul t应该显示 -

我想显示如下格式的数据(Transpose Matrix)。意思是行应该转换为列,列应该转换为行。

< / pre> 
钻井 焊接
PlanValue 96.16 45.00
AcualValue 8.00 30.00
< pre>< / pre>

解决方案





您可以使用PIVOT和UNPIVOT来实现这一目标。链接:

1. 使用PIVOT和UNPIVOT [ ^ ]

2. 使用sql的数据透视表服务器 [ ^ ]

3. Unpivot table in sql server [ ^ ]

Hi,
How to display data in transpose matrix format.

First SQL Queries for displaying data in below format-

DECLARE @Category AS TABLE (ID INT,Category NVARCHAR(100), PlanValue DECIMAL(6,2), ActValue DECIMAL(6,2))

DECLARE @tblCnt INT ,@row INT

DECLARE @cols AS NVARCHAR(MAX),@catcols NVARCHAR(max),
@query  AS NVARCHAR(MAX)

    INSERT INTO @Category(ID,Category,PlanValue)
    SELECT l.ID, l.Lookup_Value, Sum(pg.PG_TotalAntExend * pg.PG_PercMadeInOman)/100 AS PlanValue
    FROM TR_ICV_PlanningGoods pg
    INNER JOIN Lookup l ON l.ID=pg.PG_category AND l.Lookup_Type LIKE  'List Of Products'

    left outer join TM_Supplier_Category sc on sc.SC_SupplierCategoryID=pg.SC_SupplierCategoryID
    WHERE sc.SC_SupplierCategoryID=1

    GROUP BY l.Lookup_Value,l.ID

    UPDATE @Category SET C.ActValue = PROD.actsumval  FROM @Category C INNER JOIN
    ( SELECT p.prod_category AS ID, SUM(p.prod_perc_madeinoman) AS actsumval FROM TR_ICV_Product p

    left outer join TM_Supplier_Category sc on sc.SC_SupplierCategoryID=p.mio_id
where sc.SC_SupplierCategoryID=1

    GROUP BY p.prod_category) PROD  ON PROD.ID=C.ID

select * from @Category




OutPut
Table1-
ID Category PlanValue Actual Value

2527	Drilling	96.16	8.00
2528	Welding	        45.00	30.00



Result Should be display--
I want to display data like below format(Transpose Matrix).means rows should convert to column and column should convert to rows.

</pre>
                 Drilling                     Welding  
 PlanValue         96.16                          45.00
 AcualValue          8.00                          30.00
<pre></pre>

解决方案

Hi,

You could use PIVOT and UNPIVOT to achieve this. Links:
1. Using PIVOT and UNPIVOT[^]
2. Pivot table using sql server[^]
3. Unpivot table in sql server[^]


这篇关于如何在SQL Server 2008中进行转置矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆