首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求一条统计的SQL解决思路

2013-01-01 
求一条统计的SQL----奖品发放记录表-----create table share_prizes ( id INT identity(1,1) PRIMARY KEY,

求一条统计的SQL


----奖品发放记录表-----
create table share_prizes (
 id INT identity(1,1) PRIMARY KEY, --主键
 giftId int, --对应奖品表ID
 name varchar(20), --奖品名称
 deliveryTime smalldatetime  --奖品发放时间
)

insert into table share_prizes (gifID,name,deliveryTime) values(1,'ipad3','2012-08-12'); 
insert into table share_prizes (gifID,name,deliveryTime) values(2,'苹果笔记本','2012-09-12');
insert into table share_prizes (gifID,name,deliveryTime) values(3,'iphone5','2012-10-12');
insert into table share_prizes (gifID,name,deliveryTime) values(4,'平板电视','2012-11-12');
insert into table share_prizes (gifID,name,deliveryTime) values(5,'ipad3','2012-11-12');


我现在想按月份做统计如下:

               ipad3    苹果笔记本  iphone5  平板电视
2012-08     1            0                  0           0
2012-09     0            1                  0           0
2012-10     0            0                  1           0
2012-11     1            0                  0           1

求SQL大虾帮忙.先谢谢了  用的是SQL Server 2000


[解决办法]
SELECT 
CONVERT(VARCHAR(7),deliverytime,120) AS '月份',
SUM(CASE WHEN NAME = 'ipad3' THEN 1 ELSE 0 END) AS 'ipad3',
SUM(CASE WHEN NAME = '苹果笔记本' THEN 1 ELSE 0 END) AS '苹果笔记本',
SUM(CASE WHEN NAME = 'iphone5' THEN 1 ELSE 0 END) AS 'iphone5',
SUM(CASE WHEN NAME = '平板电视' THEN 1 ELSE 0 END) AS '平板电视'
FROM share_prizes
GROUP BY CONVERT(VARCHAR(7),deliverytime,120)

/*
2012-081000
2012-090100
2012-100010
2012-111001*/

热点排行
Bad Request.