¿Por qué SQL no me permite acceder a la información en consultas internas?
Estoy escribiendo una consulta para resolver la siguiente pregunta:
“Para aquellas combinaciones de cliente y producto donde el producto pertenece a una de las líneas de productos que tienen ‘Ethernet’ en su nombre, enumere el nombre del cliente, el nombre del producto, las ventas del año pasado y las ventas totales hasta la fecha”.
Ahora, tengo cuatro tablas que necesito utilizar para resolver esto: xproduct, xprodline, xsales y xcustomer. Estas están relacionadas de la siguiente manera:
[TABLA_DE_RELACIONES]
Y tienen las siguientes columnas:
[TABLA_DE_COLUMNAS]
Dado que xcustomer y xproduct no están directamente relacionados, estoy utilizando xsales para unirlos, pero tengo problemas para acceder a la información que obtengo de las consultas internas. Este es el código que tengo hasta ahora, pero arroja “ORA-00904: “S”.”SALES_YEAR_TO_DATE”: identificador no válido”:
SELECT xcustomer.cust_name, PL.prod_name, S.sales_last_year, S.sales_year_to_date FROM xcustomer JOIN(
SELECT xsales.sales_cust_nbr FROM xsales JOIN (
SELECT xproduct.prod_name, xprodline.prodline_pyear_sales, xprodline.prodline_ytd_sales, xproduct.prod_nbr FROM xproduct
INNER JOIN xprodline ON xproduct.prod_prodline = xprodline.prodline_nbr WHERE prod_prodline= 1
) PL ON xsales.sales_prod_nbr = PL.prod_nbr
)S ON S.sales_cust_nbr = xcustomer.cust_nbr;
davy.ai
Para resolver el problema de acceso a la columna sales_year_to_date, es necesario incluirla en la subconsulta que une xproduct y xprodline. Además, es necesario agrupar los resultados por cust_name y prod_name, y sumar las columnas sales_last_year y sales_year_to_date. Aquí está el código modificado:
En este código, la subconsulta interna une xsales, xproduct y xprodline para obtener la información relevante de las líneas de productos que contienen ‘Ethernet’ en su nombre. Agrupa los resultados por cliente, producto e información de ventas y suma las columnas sales_last_year y sales_year_to_date.
La consulta externa luego une los resultados de la subconsulta interna con xcustomer y agrupa los resultados por cliente y producto, mientras también suma la información de ventas para cada grupo.
Esto debería darte la salida deseada para las combinaciones de cliente-producto donde el producto pertenezca a una línea de productos que contenga ‘Ethernet’.