想在同一个表查询 列出同一个用户多天的数据
数据表( xflist) 如下:
日期 姓名 消费金额
2015-7-1 张三 100
2015-7-1 李四 90
2015-7-1 王五 80
2015-7-1 小明 50
2015-7-2 张三 30
2015-7-2 李四 60
2015-7-2 王五 90
2015-7-2 小明 10
2015-7-3 张三 50
2015-7-3 李四 40
2015-7-3 王五 20
2015-7-3 小明 30
需要查询的结果列表如下:
姓名 1号消费金额 2号消费金额 3号消费金额
张三 100 30 50
李四 90 60 40
王五 80 90 20
小明 50 10 30
目前想通过以下这种方法写,但是行不通
SELECT 姓名 ,1号消费金额 =(select 消费金额 FROM xflist where 日期='2015-7-1' and 姓名=T1. 姓名) FROM xflist T1 where 日期='2015-7-1'
麻烦高手指点写法,谢谢!
------解决思路----------------------
CREATE TABLE test11(rq DATETIME,NAME VARCHAR(20),money1 VARCHAR(20))
INSERT INTO test11
VALUES
('2015-7-1','张三','100'),
('2015-7-1','李四','90'),
('2015-7-1','王五','80'),
('2015-7-1','小明','50'),
('2015-7-2','张三','30'),
('2015-7-2','李四','60'),
('2015-7-2','王五','90'),
('2015-7-2','小明','10'),
('2015-7-3','张三','50'),
('2015-7-3','李四','40'),
('2015-7-3','王五','20'),
('2015-7-3','小明','30')
SELECT NAME,[2015-07-01],[2015-07-02],[2015-07-03]
FROM test11
PIVOT (MAX(money1) FOR rq IN ([2015-07-01],[2015-07-02],[2015-07-03]))
AS a
/*
* NAME 2015-07-01 2015-07-02 2015-07-03
-------------------- -------------------- -------------------- --------------------
李四 90 60 40
王五 80 90 20
小明 50 10 30
张三 100 30 50
(4 row(s) affected)
* */
------解决思路----------------------
select NAME,max(case rq when '2015-07-01' then money1 else 0 end )'1号消费' ,
max(case rq when '2015-07-02' then money1 else 0 end)'2号消费',
max(case rq when '2015-07-03'then money1 else 0 end )'3号消费'
from test11
group by NAME
