Estoy preparando un informe y me he unido a muchas mesas; en este caso, la tabla de la que estoy tratando de extraer datos tiene ID duplicados con múltiples (2) valores por cada ID, como si deberían estar en 2 columnas:
ID Position Caption Value
--- -------- ------- -----
143 1 Company QW
143 2 Invoice Long Service
144 1 Company IT
144 2 Invoice Complete Kit
145 1 Company OD
145 2 Invoice Foundation Leaflets
146 1 Company BIRT
146 2 Invoice TASIT
Actualmente, he unido esto a otra tabla con ID, como se esperaba, ahora duplica cada línea de datos, cuando idealmente me gustaría que la ID se uniera de forma distinta y mostrara los datos así:
ID Company Invoice
--- ------- -----
143 QW Long Service
144 IT Complete Kit
145 OD Foundation Leaflets
146 BIRT TASIT
Este es mi código actual, que produce 2 columnas pero mantiene las filas duplicadas ...
SELECT
CASE WHEN IR.Caption = 'Owning Company' THEN Value ELSE NULL END AS OwningCompany,
CASE WHEN IR.Caption = 'Invoice Summary' THEN Value ELSE NULL END AS InvoiceSummary
FROM Invoices AS I INNER JOIN
InvoiceReferences AS IR ON IR.InvoiceID = I.ID
WHERE (I.InvoiceStatus = '1')
Me da estos resultados:
OwningCompany InvoiceSummary
DT NULL
NULL Guide to Public Sector Tendering
BIRT NULL
NULL Agency
BIRT NULL
NULL food-catering
Me gustaría que los resultados fueran los siguientes:
OwningCompany InvoiceSummary
DT Guide to Public Sector Tendering
BIRT Agency
BIRT food-catering
Gracias
Tenga en cuenta que estoy más familiarizado con el formato MySQL que con la administración de SQL Server
Intente algo como esto;
SELECT DISTINCT
a.ID
,b.Value Company
,c.Value Invoice
FROM Invoices a
JOIN InvoiceReferences b
ON a.ID = b.InvoiceID
AND b.Caption = 'Owning Company'
JOIN InvoiceReferences c
ON a.ID = c.InvoiceID
AND c.Caption = 'Invoice Summary'
WHERE (a.InvoiceStatus = '1')
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras