日期:2014-05-17 浏览次数:20509 次
CREATE TABLE test ( Id INT IDENTITY(1,1) PRIMARY KEY, 名称 VARCHAR(20), 分类 VARCHAR(20), 数量 INT , 价格 INT , 日期 DATETIME ) INSERT INTO test SELECT '张三','公帐',5,10,'2010-3-2' UNION ALL SELECT '张三','私帐',6,12,'2010-3-4' UNION ALL SELECT '李四','公帐',7,10,'2010-3-2' UNION ALL SELECT '李四','私帐',8,15,'2010-3-4' SELECT [名称],SUM([公帐]),SUM([私帐]) FROM ( SELECT [名称],[公帐]=CASE WHEN [分类]='公帐' THEN [价格] ELSE 0 END ,[私帐]=CASE WHEN [分类]='私帐' THEN [价格] ELSE 0 END FROM test) a GROUP BY [名称] /* 名称 -------------------- ----------- ----------- 李四 10 15 张三 10 12 (2 行受影响) */
------解决方案--------------------
CREATE TABLE test ( Id INT IDENTITY(1,1) PRIMARY KEY, 名称 VARCHAR(20), 分类 VARCHAR(20), 数量 INT , 价格 INT , 日期 DATETIME ) INSERT INTO test SELECT '张三','公帐',5,10,'2010-3-2' UNION ALL SELECT '张三','私帐',6,12,'2010-3-4' UNION ALL SELECT '李四','公帐',7,10,'2010-3-2' UNION ALL SELECT '李四','私帐',8,15,'2010-3-4' SELECT [名称],SUM([公帐])[公帐],SUM([私帐])[私帐],SUM([合计])[合计] FROM ( SELECT [名称],[公帐]=CASE WHEN [分类]='公帐' THEN [价格] ELSE 0 END ,[私帐]=CASE WHEN [分类]='私帐' THEN [价格] ELSE 0 END,(CASE WHEN [分类]='公帐' THEN [价格] ELSE 0 END +CASE WHEN [分类]='私帐' THEN [价格] ELSE 0 END)[合计] FROM test) a GROUP BY [名称] /* 名称 公帐 私帐 合计 -------------------- ----------- ----------- ----------- 李四 10 15 25 张三 10 12 22 (2 行受影响) */