Sqlserver中PIVOT行转列透视操作

创建表:

IF OBJECT_ID(‘T040_PRODUCT_SALES‘) IS NOT NULL
DROP TABLE T040_PRODUCT_SALES
create table T040_PRODUCT_SALES
(
 ID INT IDENTITY(1,1),
   ProductName VARCHAR(20),
   SaleMonth INT,
   SalesCount INT
)

插入数据并排序:

INSERT INTO T040_PRODUCT_SALES VALUES
(‘Bicycle‘,1,1),
(‘Shoes‘,2,2),
(‘Clothes‘,3,3),
(‘Books‘,4,4),
(‘Medicine‘,5,5),
(‘Drinks‘,6,6),
(‘Shoes‘,7,7),
(‘Books‘,1,2),
(‘Bicycle‘,1,3),
(‘Medicine‘,1,4),
(‘Clothes‘,1,5),
(‘Mobile Phone‘,1,6),
(‘Books‘,1,7),
(‘Medicine‘,1,8),
(‘Shoes‘,1,9),
(‘Bicycle‘,2,10)
SELECT ProductName,
    SaleMonth,
    SUM(SalesCount) AS SalesCount
FROM T040_PRODUCT_SALES
GROUP BY ProductName,
   SaleMonth
ORDER BY ProductName,
      SaleMonth

格式:

/****
SELECT 非透视列,
             [透视列 1] AS ‘列名1‘,
             [透视列 2] AS ‘列名2‘,
             [透视列 3] AS ‘列名3‘
FROM (
        -- 源数据
        SELECT 非透视列,
               透视列值的来源列,
               需要聚合的值
        FROM 表
     )AS 别名
PIVOT
     (
        SUM(需要聚合的值)
        FOR 透视列值的来源列 IN ([透视列 1],[透视列 2],[透视列 3])
     )AS 别名
****/

行转列的代码:

select ProductName,
    ISNULL([1],0) AS ‘1‘,
    ISNULL([2],0) AS ‘2‘,
    ISNULL([3],0) AS ‘3‘,
    ISNULL([4],0) AS ‘4‘,
    ISNULL([5],0) AS ‘5‘,
    ISNULL([6],0) AS ‘6‘  from (
	select ProductName,
     SaleMonth,
     SalesCount from T040_PRODUCT_SALES)
	 as Sales
	 pivot
	 (
	 SUM(SalesCount)
 FOR SaleMonth IN([1],[2],[3],[4],[5],[6])
	 ) as   PIVOTBL

结果:

时间: 2024-12-24 11:03:11

Sqlserver中PIVOT行转列透视操作的相关文章

sqlserver报表统计——参数化动态PIVOT行转列

先列出所有表结构: --title 报表 --table 实收水费:hx_t_received --字段 收费部门id:hx_fdepartmentid 1.收费部门名称:hx_fdepartmentname 应收水费信息ID:hx_freceivableid --收费类别:hx_ftype (水费(1):再分[开户(table) 供水类别:自来水(100000001)==水费,中水(100000002)==中水费],代理费(2)==污水处理费) --实收金额:hx_freceivedamoun

SQL Server中使用PIVOT行转列

1.建表及插入数据 1 USE [AdventureDB] 2 GO 3 /****** Object: Table [dbo].[Score] Script Date: 11/25/2016 4:30:50 PM ******/ 4 SET ANSI_NULLS ON 5 GO 6 7 SET QUOTED_IDENTIFIER ON 8 GO 9 10 CREATE TABLE [dbo].[Score]([Name] [varchar](50) NULL,[Subject] [varcha

SQL Server 2008 R2——PIVOT 行转列 以及聚合函数的选择

原文:SQL Server 2008 R2--PIVOT 行转列 以及聚合函数的选择 ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性. 未经作者同意请勿修改(包括本声明),保留法律追究的权利. 未经作者同意请勿用于学术性引用. 未经作者同意请勿用于商业出版.商业印刷.商业引用. 本文不定期修正完善,为保证内容正确,建议移步原文处阅读. 本文

Pivot 行转列用法

源视图: 使用 Pivot 行转列进行处理: 语句如下: select m.*,a.A as AccountA,a.B as AccountB,a.C as AccountC,a.D as AccountD,a.E as AccountE,a.F as AccountF,a.G as AccountG from     (select TypeCode,Account,MainCode from Sale_AdvanceType) p     pivot    (        max(Acco

listview读某行某列的操作:

→读某行某列的操作:Edit1.Text := listview1.Items[i].Caption; //读第i行第1列Edit2.Text := listview1.Items[i].SubItems.strings[0]; //读第i行第2列Edit3.Text := listview1.Items[i].SubItems.strings[1]; //读第i行第3列

SQLServer中查询的数字列前面补0返回指定长度的字符串

SQLServer中查询的数字列前面补0返回指定长度的字符串: 如: 角本如下: /****** Script for SelectTopNRows command from SSMS ******/ SELECT TOP 1000 [ID] ,[SN] ,[Name] FROM [EduDB].[dbo].[TestTab] select Right('0123456',SN) from TestTab; select RIGHT(REPLICATE('0',5)+CAST(SN AS var

MATLAB基本操作(十):关于OpenCV坐标系与MATLAB中矩阵行与列的对应

OpenCV坐标点与MATLAB中矩阵行与列的对应 Last Edit 2014/5/4 转载请注明出处:http://blog.csdn.net/jxlijunhao 之所以会写这个东西,因为要把OpenCV中得到的角点坐标,保存在txt文件中,然后投影到matlab中. 首先,OpenCV中的坐标系如下图: 所以,OpenCV中以(0,0)为原点,假定一个点(10,2),表示y=10,x=2 在matlab中以  (1,1)为原点,所以上面的点在matlab中应为(11,3) 验证代码: 在

sql中的行转列和列转行的问题

sql中的行转列和列转行的问题 这是一个常见的问题,也是一个考的问题 1.行转列的问题  简单实例 CREATE TABLE #T ( MON1 INT, MON2 INT, MON3 INT ) GO INSERT INTO #T VALUES(1,2,3) GO SELECT * FROM #T --行转列:(union all) SELECT MON1 FROM #T UNION ALL SELECT MON2 FROM #T UNION ALL SELECT MON3 FROM #T G

如何把excel中的行转为列?

步骤:选择复制要转行的内容--->新建一张表格---->右键选择性粘贴---->转置----->成功把行转为列(具体操作看下图) 选择复制这些内容