SQL Server: consulta. ¿Cómo divido una columna en 2 donde se duplica el ID de las filas?

Adam Dickinson

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

Rich Benner

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

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

cómo eliminar filas donde se duplica el valor de una sola columna

¿Cómo extraer las filas de un marco de datos donde se duplica una combinación de valores de columna especificados?

pandas: ¿Cómo divido el texto de una columna en varias filas?

¿Cómo obtener todas las filas en la tabla MySQL donde el valor de una columna es el mismo?

Cómo actualizar una columna (todas las filas) según el valor actual en SQL Server

¿Cómo puedo filtrar filas donde el primer carácter de una columna está en un rango con EF y SQL Server?

¿Cómo establecer el valor de las filas como columna en SQL Server?

Cómo la consulta SQL se une a la tabla 2 si separamos los datos de las filas en la misma columna en la segunda tabla

Pandas: elimine las filas donde el valor de una columna aparece en cualquier fila de otra

PostgreSQL Obtiene todas las filas donde su ID no está en ninguna otra columna de una tabla

Extraiga todas las filas de una columna según el valor de otra columna (consulta SQL)

¿Cómo puedo obtener el recuento de filas de una tabla que se encuentra en una base de datos diferente de donde se ejecuta la consulta?

¿Cómo transformar una tabla de BigQuery en una lista de secuencias de filas donde las secuencias se agregan mediante una ventana deslizante en el tiempo?

¿Cómo puedo incluir filas con un valor de columna mayor que el que se devuelve en una consulta SQL que utiliza combinaciones internas?

SQL Server: convertir el valor de 2 filas en 1 columna y unirlo, mientras se usa una cláusula where

¿Cómo se muestra el resultado de una consulta en 2 filas?

¿Cómo divido los valores de columna en nuevas filas en el delimitador?

En SQL, cómo no seleccionar filas donde el valor de una columna es el mismo que el de la fila superior

Almacene en una variable el número de filas de una tabla donde una columna tiene un cierto valor en SQL Server Compact

Cómo obtener las filas donde una columna está en su máximo dentro de cada grupo en DolphinDB

¿Cómo se filtran las filas de Google Sheets por el valor de una columna?

¿Cómo eliminar filas donde la columna coincide con cualquiera de los conjuntos usando una consulta SQL?

¿Cómo extraer todas las filas que tienen el mismo valor en una columna que una de las filas?

Cómo agregar el resto de las filas a una segunda columna si se excede la altura

Eloquent: Obtenga todas las filas donde el valor de la columna (x) existe en más de una fila (SQL DB)

Actualice solo una de las filas que tienen el mismo ID. Consulta de SQL Server.

Obtener el valor máximo de la columna para las filas donde se cumple una condición

Obtener el valor máximo de la columna para las filas donde se cumple una condición

¿Cómo se cambia el tipo de datos de una columna en SQL Server?