我有一个包含以下字段的表:
p1
p2
s1
s2
Run Code Online (Sandbox Code Playgroud)
其中 p1 -> player1, p2 -> player2, s1 -> game1, s2 -> game2 玩家的数量可以从 3 - 10 不等。表中有他们之间的结果。例如,假设我们有 4 名球员:TIM、ROB、NICK、GEORGE 以及他们之间的比赛:
p1 p2 s1 s2
TIM ROB 4 0
NICK GEORGE 4 0
TIM NICK 0 4
ROB GEORGE 4 0
TIM GEORGE 4 0
ROB NICK 4 0
Run Code Online (Sandbox Code Playgroud)
我想用查询产生的东西是这样的:
TIM ROB NICK GEORGE
TIM X 4-0 0-4 4-0
ROB 0-4 X 4-0 4-0
NICK 0-4 4-0 X 4-0
GEORGE 0-4 0-4 0-4 X
Run Code Online (Sandbox Code Playgroud)
在 MySQL 中是否有可能?提前致谢。
数据透视表跟踪表示例
CREATE TABLE IF NOT EXISTS `mail_track` (
`ID` int(10) NOT NULL auto_increment,
MemberID mediumint(7) default NULL,
`MessageTitle` varchar(20) default NULL,
`Type` varchar(6) default NULL,
`URLID` varchar(15) default NULL,
`DateTime` datetime default NULL,
`IP` varchar(15) default NULL,
PRIMARY KEY (`ID`),
KEY `DateTime` (`DateTime`,`Type`,`MessageTitle`,`MemberID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=199952834 ;
Run Code Online (Sandbox Code Playgroud)
枢轴查询
SELECT
SUM( IF( mail_track.Type = 'Open', 1, 0 ) ) AS Opens,
SUM( IF( mail_track.Type = 'Click', 1, 0 ) ) AS Clicks,
SUM( IF( mail_track.Type = 'Sent', 1, 0 ) ) AS Sent,
DATE(DateTime)
FROM mail_track GROUP BY DATE(DateTime)
Run Code Online (Sandbox Code Playgroud)