T_details(t_date,t_game)
2009-05-09 胜
2009-05-09 胜
2009-05-09 负
2009-05-09 负
2009-05-10 胜
2009-05-10 胜
2009-05-10 负
结果
日期 胜 负
2009-05-09 2 2
2009-05-10 2 1
写出sql语句
行转列,sql很多的
求具體寫法啊
主要是count()不容易分,转换倒是会,望不吝赐教。
搞定了,謝謝。
@草上飞吧:
CREATE TABLE #t ( logtime DATETIME NOT NULL , token VARCHAR(100) NOT NULL ) INSERT INTO #t VALUES ( '2009-05-09', '胜' ) INSERT INTO #t VALUES ( '2009-05-09', '胜' ) INSERT INTO #t VALUES ( '2009-05-09', '负' ) INSERT INTO #t VALUES ( '2009-05-09', '负' ) INSERT INTO #t VALUES ( '2009-05-10', '胜' ) INSERT INTO #t VALUES ( '2009-05-10', '胜' ) INSERT INTO #t VALUES ( '2009-05-10', '负' ) SELECT temp.logtime , MAX(temp.胜) AS 胜 , MAX(temp.负) AS 负 FROM ( SELECT logtime , CASE token WHEN '胜' THEN COUNT(*) ELSE NULL END AS '胜' , CASE token WHEN '负' THEN COUNT(*) ELSE NULL END AS '负' FROM #t GROUP BY logtime , token ) AS temp GROUP BY temp.logtime DROP TABLE #t
@chenping2008: 我想出一個不用子查詢的,你的方法也很好,非常感謝!
SELECT t_date,sum(if(t_game='胜',1,0)) 勝,sum(if(t_game='负',1,0)) 負 from t_details GROUP BY t_date;
select t_date 日期,count('胜') 胜,count('负') 负 from group by t_date
对不起 表名没有加上 sorry
@java懵懂: 这个不对的,结果是
日期 胜 负
2009-05-09 4 4
2009-05-10 3 3
SELECT t_date,sum(if(t_game='胜',1,0)) 勝,sum(if(t_game='负',1,0)) 負 from t_details GROUP BY t_date;