sql >> Base de Datos >  >> RDS >> Sqlserver

Error de consulta con nombre de columna ambiguo en SQL

Enfrentamos este error cuando seleccionamos datos de más de una tabla uniendo tablas y al menos una de las columnas seleccionadas (también sucederá cuando use * para seleccionar todas las columnas) exista con el mismo nombre en más de una tabla (nuestras mesas seleccionadas/juntas). En ese caso, debemos especificar de qué tabla estamos seleccionando la columna.

A continuación se muestra un ejemplo de implementación de la solución del concepto explicado anteriormente

Creo que tienes ambigüedad solo en InvoiceID que existe tanto en InvoiceLineItems y Invoices Otros campos parecen distintos. Así que prueba esto

Acabo de reemplazar InvoiceID con Invoices.InvoiceID

   SELECT 
        VendorName, Invoices.InvoiceID, InvoiceSequence, InvoiceLineItemAmount
    FROM Vendors 
    JOIN Invoices ON (Vendors.VendorID = Invoices.VendorID)
    JOIN InvoiceLineItems ON (Invoices.InvoiceID = InvoiceLineItems.InvoiceID)
    WHERE  
        Invoices.InvoiceID IN
            (SELECT InvoiceSequence 
             FROM InvoiceLineItems
             WHERE InvoiceSequence > 1)
    ORDER BY 
        VendorName, Invoices.InvoiceID, InvoiceSequence, InvoiceLineItemAmount

Puede usar tablename.columnnae para todas las columnas (en selección, dónde, agrupar por y ordenar por) sin usar ningún alias. Sin embargo, puede usar un alias guiado por otras respuestas