在SQL中转置行/列 [英] Transposing the row/columns in SQL

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

问题描述

亲爱的所有人,

我有一种情况,需要计算按月购买,销售和利润/亏损.这个东西已经照顾好了.现在,我需要转置此数据以将月份和年份"显示为列标题以及购买",销售"和利润/亏损".作为行长.月份和年份不固定.

我知道,可以通过使用temp/variable表使用长方法来完成. SQL中的数据透视"选项支持单个数据类型值.

但是,我想知道任何其他直接有助于转置行和列的方法

在此先感谢

Dear all,

I have a scenario where I need to calculate the Monthwise Purchases, sales and Profit/Loss. This thing is taken care of. Now I need to Transpose this data to show Month & year as column heading and Purchases, sales & Profit/Loss. as Row heads. The Month & year are not fixed.

I know that, it can be done using long method by using temp/variable table. The Pivot option in the SQL supports single data type values.

But, I would like to know about any other method which directly helps in transposing the rows & columns

Thanks in advance

推荐答案

看看 [ ^ ]


我认为此查询对您有帮助

从表名中按月(TrDt)分组选择Sum(t1),month(TrDt);
i think this query will help u

select Sum(t1),month(TrDt) from tablename group by month(TrDt);


Hi Friend,
我找到了解决方法.
我们可以使用PIVOT Concept来做到.

我有一个名为"Purchase"的表,其中包含列(ID,DATE,Purchased,Sold,ProfitOrLoss)
我用参数@Year
创建了一个存储过程 我将显示购买项总数,已售项总数和一年的平均利润/亏损的月度明细

代码:-

Hi Friend,
I have found a solution.
We can do it by using PIVOT Concept.

I''m having a table named as Purchase with columns(ID,DATE,Purchased,Sold,ProfitOrLoss)
I have created a stored procedure with a parameter @Year
I''m going to show the month wise details of total number of purchased items,Total number of Sold items and Average Profit/Loss for a year

Code:-

--SP_GET_PURCHASE_ORDER 2011
ALTER PROCEDURE SP_GET_PURCHASE_ORDER
@YEAR INT
AS
BEGIN
SELECT 'PURCHASE' AS PURCHASE,JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC FROM(
SELECT PURCHASE,SUBSTRING(CONVERT(VARCHAR(8),DATE,100),1,3) ADATE FROM DBO.PURCHASE WHERE YEAR(DATE)=@YEAR
)V
PIVOT(SUM(PURCHASE) FOR ADATE IN(JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC)) AS PVT

UNION ALL

SELECT 'SALES' AS PURCHASE,JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC FROM(
SELECT SALES,SUBSTRING(CONVERT(VARCHAR(8),DATE,100),1,3) ADATE FROM DBO.PURCHASE WHERE YEAR(DATE)=@YEAR
)V
PIVOT(SUM(SALES) FOR ADATE IN(JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC)) AS PVT

UNION ALL


SELECT 'Profit/Loss' AS PURCHASE,JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC FROM(
SELECT PROFITLOSS,SUBSTRING(CONVERT(VARCHAR(8),DATE,100),1,3) ADATE FROM DBO.PURCHASE WHERE YEAR(DATE)=@YEAR
)V
PIVOT(AVG(PROFITLOSS) FOR ADATE IN(JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC)) AS PVT

END




-请保持联系

阿拉文斯·G
SQL Developer,
Kadamba Technologies Pvt.Ltd,
钦奈
电子邮件:-aravinth.it04@gmail.com




--Please Keep me in Touch

Aravinth.G
SQL Developer,
Kadamba Technologies Pvt.Ltd,
Chennai
Email:- aravinth.it04@gmail.com


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

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