Tablas temporales que se creen al vuelo.
CREATE TEMPORARY TABLE tuzo_report SELECT d.id, d.name FROM tuzos d INNER JOIN legs l ON l.dog_id=d.id INNER JOIN nails n ON n.leg_id=l.id GROUP BY d.id HAVING MIN(n.last_clipped) < DATE_SUB(NOW(), INTERVAL 1 MONTH);
Concatenar variables
select person_id, group_concat(hobbies separator ', ')
from peoples_hobbies group by person_id;
SELECT GROUP_CONCAT(DISTINCT CONCAT("`",usuario,"`") SEPARATOR "+")
INTO @sumaVertical
FROM X
Este caracter ` identifica las columnas aunque tengan espacios.
Pivotear Tablas.
SELECT SUM(CASE WHEN Enero THEN ROUND(Enero,2) END)Enero, SUM(CASE WHEN Febrero THEN ROUND(Febrero,2) END)Febrero, SUM(CASE WHEN Marzo THEN ROUND(Marzo,2) END)Marzo, SUM(CASE WHEN Abril THEN ROUND(Abril,2) END)Abril, SUM(CASE WHEN Mayo THEN ROUND(Mayo,2) END)Mayo, SUM(CASE WHEN Junio THEN ROUND(Junio,2) END)Junio, SUM(CASE WHEN Julio THEN ROUND(Julio,2) END)Julio, SUM(CASE WHEN Agosto THEN ROUND(Agosto,2) END)Agosto, SUM(CASE WHEN Septiembre THEN ROUND(Septiembre,2) END)Septiembre, SUM(CASE WHEN Octubre THEN ROUND(Octubre,2) END)Octubre, SUM(CASE WHEN Noviembre THEN ROUND(Noviembre,2) END)Noviembre, SUM(CASE WHEN Diciembre THEN ROUND(Diciembre,2) END)Diciembre,
FROM meses
Aumentar los carateres de concatenamiento de la Sesion
SET SESSION group_concat_max_len = 1000000;
Sin Sesión tomado de stackoverflow. Thank you ZeWaren :).
CREATE TABLE some_table (
field1 int(11) NOT NULL AUTO_INCREMENT,
field2 varchar(10) NOT NULL,
field3 varchar(10) NOT NULL,
PRIMARY KEY (`field1`)
);
INSERT INTO `some_table` (field1, field2, field3) VALUES
(1, 'text one', 'foo'),
(2, 'text two', 'bar'),
(3, 'text three', 'data'),
(4, 'text four', 'magic');
SELECT resultFROM (SELECT @result := '',
(SELECT result
FROM (SELECT @result := CONCAT_WS(';', @result, field2) AS result,
LENGTH(@result) AS blength
FROM some_table
ORDER BY blength DESC
LIMIT 1) AS sub1) AS result) AS sub2;
Sistaxis WITH ROLLUP para sacar totales.
Ejecutar las cadenas dinamicas
PREPARE stmt FROM @sqlX;/*El smt es la cadena con que arme el select y el sqlx el from*/
o
PREPARE stmt;
EXECUTE stmt; DEALLOCATE PREPARE stmt;
No hay comentarios:
Publicar un comentario