sql 时间行列转换求总和

先看表结构

USE [TestMyDB]
GO

/****** Object:  Table [dbo].[Product]    Script Date: 2015/9/25 16:09:39 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING OFF
GO

CREATE TABLE [dbo].[Product](
    [ProductId] [VARCHAR](36) NOT NULL,
    [ProductName] [VARCHAR](50) NULL,
    [CreateDate] [DATETIME] NULL,
    [Price] [DECIMAL](18, 2) NULL,
 CONSTRAINT [PK_Product] PRIMARY KEY CLUSTERED
(
    [ProductId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

插入语句

--INSERT INTO dbo.Product VALUES(NEWID(),‘鸡蛋‘,GETDATE(),0.5)
--INSERT INTO dbo.Product VALUES(NEWID(),‘鸡蛋‘,GETDATE(),0.5)
--INSERT INTO dbo.Product VALUES(NEWID(),‘鸡蛋‘,GETDATE(),0.5)
--INSERT INTO dbo.Product VALUES(NEWID(),‘鸡蛋‘,GETDATE(),0.5)
--INSERT INTO dbo.Product VALUES(NEWID(),‘鸡蛋‘,GETDATE(),0.5)
--INSERT INTO dbo.Product VALUES(NEWID(),‘鸡蛋‘,GETDATE(),0.5)
--INSERT INTO dbo.Product VALUES(NEWID(),‘鸡蛋‘,GETDATE(),0.5)
--INSERT INTO dbo.Product VALUES(NEWID(),‘鸡蛋‘,GETDATE(),0.5)

--INSERT INTO dbo.Product VALUES(NEWID(),‘猪肉‘,GETDATE(),25.8)
--INSERT INTO dbo.Product VALUES(NEWID(),‘猪肉‘,GETDATE(),25.8)
--INSERT INTO dbo.Product VALUES(NEWID(),‘猪肉‘,GETDATE(),25.8)
--INSERT INTO dbo.Product VALUES(NEWID(),‘猪肉‘,GETDATE(),25.8)
--INSERT INTO dbo.Product VALUES(NEWID(),‘猪肉‘,GETDATE(),25.8)
--INSERT INTO dbo.Product VALUES(NEWID(),‘猪肉‘,GETDATE(),25.8)

--INSERT INTO dbo.Product VALUES(NEWID(),‘牛肉‘,GETDATE(),60.8)
--INSERT INTO dbo.Product VALUES(NEWID(),‘牛肉‘,GETDATE(),60.8)
--INSERT INTO dbo.Product VALUES(NEWID(),‘牛肉‘,GETDATE(),60.8)
--INSERT INTO dbo.Product VALUES(NEWID(),‘牛肉‘,GETDATE(),60.1)

时间行列转换求总和

SELECT
        ProductName,
        SUM([1]+[2]+[3]+[4]+[5]+[6]+[24]) AS summary,
        [1] ,
        [2] ,
        [3] ,
        [4],
        [5],
        [6],
        [24]

from
(SELECT  --‘当天价格总和‘ AS Cost_Sorted_By_Production_Days ,
        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],
        ISNULL([24],0)AS [24]
FROM    ( SELECT
DAY(CreateDate) CreateDate,
ProductName ,
SUM(Price) Price
FROM dbo.Product GROUP BY ProductName,day(CreateDate)
        ) AS SourceTable PIVOT
( SUM(Price) FOR CreateDate IN ( [1], [2], [3], [4],[5],[6],[24] ) ) AS PivotTable ) AS a  GROUP BY a.ProductName,a.[1],a.[2],a.[3],a.[4],a.[5],a.[6],a.[24]
时间: 2024-10-13 10:23:11

sql 时间行列转换求总和的相关文章

sql server 行列转换

SQL 列转行 2011-04-22 16:13:41 好东西,转一下,嘿嘿. * 普通行列转换 (爱新觉罗.毓华 2007-11-18于海南三亚) 假设有张学生成绩表(tb)如下: Name Subject Result 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 */ ------------------------------------------------------------------------- /* 想变成

简单的叙述下SQL中行列转换的小知识!

行列转换对于工作还是学习中总是不可避免的会遇到(虽然本人还尚未工作,萌萌哒的学生一枚),解决的方法也有很多,我这里就总结一下我所想解决的问题以及怎么去解决的方法, 可能网上已经有很多类似的方法了,有的比我的可能会更好,就当我记录一下自己的学习经历吧.这里我们列举一个关于股票的每日入账出账做一个统计然后整理数据,虽然例子可能不太合理, 但是不要太执着于这些细节,能说明问题就好,傻笑ing..... 1 列转行:按照某一列分组,将另一列作为行时列名可数,不变. 什么意思呢?话说多了反而不懂,放两张图

sql 时间格式转换

sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/ CONVERT(varchar(10), 时间一, 23) 结果:2007-02-01 /*varchar(10)表示日期输出的格式,如果不够长会发生截取*/ 语句及查询结果: Select CONVERT(varchar

12、SQL Server 行列转换

SQL Server 行转列 在SQL Server 2005中PIVOT 用于将列值转换为列名(行转列),在SQL Server 2000中是没有这个关键字的 只能用case语句实现. --创建测试数据库 use master go if ( exists (select * from sys.databases where name = 'webDB') ) drop database webDB go create database webDB on primary ( name = 'w

Sql日期时间格式转换大全集,SQL加减一个月,加减一天,SQL时间格式转换。

语句及查询结果: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06 Select CONVERT(varc

sql实现行列转换

姓名 科目 成绩 牛芬 语文 81 牛芬 数学 88 牛芬 英语 84 张三 语文 90 张三 数学 98 张三 英语 90 (表一) 现有一个表如(表一) 姓名 语文 数学 英语 牛芬 81 88 84 张三 90 98 90 (表二) 想要转换为(表二) sql:select  stuName as 姓名,chinese as 语文,math as 数学,english as 英文 from( select sutName, case subject when chinese then sc

SQL的行列转换

[一]行转列 1,查询原始的数据 /***这次练习的主题,行转列,列转行***/select * from Scores 2,得到姓名,通过group by select Student as '姓名'from Scoresgroup by Studentorder by Student 3,再加上max, case……when select Student as '姓名',max(case Subject when '语文' then Score else 0 end) as '语文' ,--

mysql中的sql时间格式转换

from_unixtime(unix_timestamp, format) 把时间戳转化为指定的格式 as: select from_unixtime(addTime, '%Y-%m-%d %h:%i:%s') as datetime from table1 unix_timestamp([datetime]) 把日期时间转化为时间戳 as: select from_unixtime([addDay]) as unixtime from table1 case(value as type) co

SQL语句行列转换

创建表格 CREATE TABLE T2 (STU_NAME CHAR(5),COURSE CHAR(5),MARK INT NOT NULL) INSERT INTO T2 VALUES ('城南','马哲',70) INSERT INTO T2 VALUES ('城南','数学',65) INSERT INTO T2 VALUES ('城南','英语',58) INSERT INTO T2 VALUES ('城南','语文',79) INSERT INTO T2 VALUES ('李四','