当前位置: 代码迷 >> Sql Server >> 同一个表查询列出同一个用户多天的数据,该如何处理
  详细解决方案

同一个表查询列出同一个用户多天的数据,该如何处理

热度:62   发布时间:2016-04-24 08:58:06.0
同一个表查询列出同一个用户多天的数据
想在同一个表查询  列出同一个用户多天的数据

数据表( 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 
  相关解决方案