¿Cómo conseguir dos resultados de la consulta de la misma columna de la tabla para la altura y el peso

DJ Taiga:

Tengo una tabla que contiene esencialmente tanto la altura , el peso y la fecha de los estudiantes ( SID ). La altura y el peso se encuentran en la misma columna: 'Percent'y una columna ENUM contiene altura y peso. Las inscripciones para ambos tienen la misma fecha exacta:

-- Table structure and sample data for table `PROGWandH`
--
CREATE TABLE `wandh` (
  `Wid` int(24) NOT NULL,
  `sid` int(4) NOT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `level` enum('height','weight') NOT NULL,
  `Percent` decimal(5,1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `PROGWandH` (`Wid`, `sid`, `date`, `level`, `Percent`) VALUES
(157, 55, '2020-01-13 15:00:00', 'weight', '20.2'),
(131, 55, '2019-12-12 15:00:00', 'weight', '19.8'),
(121, 55, '2019-11-14 15:00:00', 'weight', '19.3'),
(774, 55, '2020-01-13 15:00:00', 'height', '113.0'),
(749, 55, '2019-12-12 15:00:00', 'height', '112.0'),
(739, 55, '2019-11-14 15:00:00', 'height', '111.5');
--
ALTER TABLE `wandh`
  ADD PRIMARY KEY (`Wid`);

Estoy tratando de generar una lista con columnas de altura, la anchura y la fecha. El uso de PHP que genera un conjunto cada uno, uno tras otro, pero necesito para generar la lista como la altura, el peso, la fecha, la altura, el peso, etc. Lo que he probado hasta ahora genera duplicados, por lo que la salida no es sincronización:

select Percent, s1.Percent1, date
from wandh
JOIN (SELECT DISTINCT Percent as 'Percent1' from wandh where level = 'weight' and sid = 55) as s1
      where sid = 55 and level = 'height';

y

select Percent, s1.Percent1, date
from wandh JOIN (SELECT Percent as 'Percent1' from wandh where level = 'weight' and sid = 55) as s1
      on date where sid = 55 and level = 'height';

Otras variaciones que he intentado no hacer el trabajo.

select level, Percent, date from wandh where level like '%eight' and sid = 55;

¿Qué me estoy perdiendo?

pasarán;

Puede hacerlo con la agregación condicional:

select sid, date,
  max(case when level = 'weight' then percent end) weight,
  max(case when level = 'height' then percent end) height
from wandh
group by sid, date

Vea la demostración .
resultados:

| sid | date                | weight | height |
| --- | ------------------- | ------ | ------ |
| 55  | 2019-11-14 15:00:00 | 19.3   | 111.5  |
| 55  | 2019-12-12 15:00:00 | 19.8   | 112    |
| 55  | 2020-01-13 15:00:00 | 20.2   | 113    |

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=298548&siteId=1
Recomendado
Clasificación