Cita: Y para contruir la tabla, no tienes más que buscar MAX(dia) y así sabes el número de columnas que tienes. Para sacar los artículos, te recomiendo que eches un ojo a la cláusula GROUP BY, que verás que permite añadir varios campos separados por coma y que, además, permite utilizar WITH ROLLUP para que añada campos NULL en los lugares en que no haya dato para cada agrupación. Con esto podrías hacer "GROUP BY articulo, dia WITH ROLLUP" y tendrías un registro resultado por cada celda de tu tabla.
No estaras hablando de GROUP_CONCAT?
Cita: no tienes más que buscar MAX(dia) y así sabes el número de columnas que tienes
No necesariamente porque el maximo sea 10, significa que hayan 10 registros ;) Es mejor utilizar COUNT