Registro: 5. El problema de fila a columna encontrado en SQL (+botón forzado de solución de problema 1795)

Título original: 1795. El precio de cada producto en diferentes tiendas

superficie:Products

+-------------+---------+ 
| Nombre de columna | Tipo | 
+-------------+---- -----+ 
| product_id | int | 
| 
| store2 |
|
store1 | int 
La clave principal de esta tabla es product_id (ID del producto). 
Cada fila almacena el precio de este producto en diferentes tiendas store1, store2, store3. 
Si este producto no se vende en la tienda, el valor será nulo. 
Reestructure la tabla para consultar el precio de cada producto en diferentes tiendas, de modo que el formato de salida sea . Si el producto no se vende en la tienda, la fila no se genera. El orden en la tabla de salida no es obligatorio . 
Consulte el siguiente ejemplo para ver el formato de salida de la consulta. Ejemplo 1:
 Introduzca: 
Tabla de productos: 
+---------+-------+-------+-------+ 
| product_id | store1 | store2 | tienda3 | 
+---------+-------+-------+-------+Products(product_id, store, price)
 
| 0 | 95 | 100 | 105 |
| 1 | 70 | nulo | 80 | 
+---------+-------+-------+-------+ Salida: 
+--- ------+-------+-------+ 
| id_producto | tienda | precio | 
+--------- ---+------ --+-------+ 
| 0 | tienda1 | 95 | 
| 0 | tienda2 | 100 | 
| 0 | tienda3 | 105 | 
| 1 | tienda1 | 70 | 
| 1 | tienda3 | 80 | 
+--- ---------+---------+-------+ Explicación: 
Los precios del producto 0 en tienda1, tienda2 y tienda3 son respectivamente Para 95,100,105. 
Los precios del producto 1 en tienda1 y tienda3 son 70 y 80 respectivamente. No puedo comprarlo en la tienda 2.

Idea para resolver problemas: se puede ver que en el ejemplo, el comportamiento de la tabla de entrada: product_id, store1, store2, store3. Pero en la tabla de salida, store1, store2 y store3 vuelven a ser el contenido de las columnas de la tabla, por lo que es necesario realizar operaciones de fila a columna.

Resolución de problemas:

# Write your MySQL query statement below
# 1.一列一列处理
# 2.union all 拼接每一列的结果
# 3.如果一产品在商店中没有出售,则不输出这一行,所以用is not null作为筛选条件
select 
product_id , 'store1' as store , store1 as price
from
products
where store1 is not null 
union all
select
product_id , 'store2' as store , store2 as price
from
products
where store2 is not null 
union all
select
product_id , 'store3' as store , store3 as price
from
products
where store3 is not null 

Supongo que te gusta

Origin blog.csdn.net/weixin_45314061/article/details/130093258
Recomendado
Clasificación