OK - Ho guardato e cercato e ho trovato molti esempi, ma niente soddisfaceva il mio bisogno. Forse ho usato le parole sbagliate per cercare, ma potrei usare il tuo aiuto. Fornirò il maggior numero di dettagli possibile.Come rimuovere le righe duplicate dall'istruzione unione
Ho bisogno di produrre un report che unisca campi da due tabelle, o meglio una vista e una tabella, in una tabella per un report. Ecco la dichiarazione che sto usando:
SELECT A.ConfInt, A.Conference,
NULL as Ordered,
NULL as Approved,
NULL as PickedUp,
SUM(dbo.Case_Visit_Payments.Qty) AS Qty
FROM dbo.Conferences as A INNER JOIN
dbo.Case_Table ON A.ConfInt = dbo.Case_Table.Conference_ID INNER JOIN
dbo.Case_Visit_Payments ON dbo.Case_Table.Case_ID = dbo.Case_Visit_Payments.Case_ID
WHERE (dbo.Case_Visit_Payments.Item_ID = 15 AND A.ProjectCool = 1)
GROUP BY A.Conference, A.ConfInt
UNION
SELECT B.ConfInt,
B.Conference,
SUM(dbo.Cool_Fan_Order.NumberOfFansRequested) AS Ordered,
SUM(dbo.Cool_Fan_Order.Qty_Fans_Approved) AS Approved,
SUM(dbo.Cool_Fan_Order.Qty_Fans_PickedUp) AS PickedUp,
NULL AS Qty
FROM dbo.Conferences as B LEFT OUTER JOIN
dbo.Cool_Fan_Order ON B.ConfInt = dbo.Cool_Fan_Order.Conference_ID
where B.ProjectCool = 1
GROUP BY B.Conference, B.ConfInt
Ed ecco i risultati:
4 Our Lady NULL NULL NULL 11
4 Our Lady 40 40 40 NULL
7 Holy Rosary 20 20 20 NULL
11 Little Flower NULL NULL NULL 21
11 Little Flower 5 5 20 NULL
19 Perpetual Help NULL NULL NULL 2
19 Perpetual Help 20 20 20 NULL
Quello che vorrei fortemente preferisco è quello di non avere le righe duplicazione, come ad esempio:
4 Our Lady 40 40 40 11
7 Holy Rosary 20 20 20 NULL
11 Little Flower 5 5 20 21
19 Perpetual Help 20 20 20 2
Spero che questa domanda sia stata abbastanza chiara. Ogni suggerimento sarà molto apprezzato. E segnalo come risposta. :)
Gregory
La sub-query correlata ha fatto il trucco. Ha funzionato perfettamente. Grazie mille. –
BTW: l'espressione di tabella comune non è richiesta per l'istruzione con la sottoquery correlata nell'elenco SELECT; il CTE potrebbe essere altrettanto facilmente sostituito con una vista in linea (nella clausola FROM), che è ciò che avremmo bisogno di fare se si trattasse di MySQL. – spencer7593