Ho una query che UNIONs due set di dati un po 'simili, ma entrambi hanno alcune colonne che non sono presenti nell'altro - cioè le colonne hanno valori NULL nell'UNIONE risultante. Lo scopo di UNION è quello di ottenere i dati in un formato amichevole per il lato software.TSQL ORDER-BY con UNIONE di dataset diversi
Il problema è che ho bisogno di ordinare i dati risultanti utilizzando quelle colonne che esistono solo in uno o l'altro insieme.
Ad esempio: Tabella1 ha campi ID, Cat, Prezzo. Table2 ha ID campi (come in Tabella1), Nome, Abbrv.
La mia domanda assomiglia a qualcosa di simile:
SELECT t1.ID, t1.Cat, t1.Price, NULL as Name, NULL as Abbrv FROM t1
UNION
SELECT t2.ID, NULL as Cat, NULL as Price, t2.Name, t2.Abbrv FROM t2
ORDER BY Price DESC, Abbrv ASC
L'ORDER BY è dove mi sono bloccato. I dati si presenta così:
100---Balls-----1.53----------------------
200---Bubbles---1.24----------------------
100---------------------RedBall----101RB--
100---------------------BlueBall---102BB--
200---------------------RedWand----201RW--
200---------------------BlueWand---202BW--
Ma io voglio farlo sembrare come questo:
100---Balls-----1.53----------------------
100---------------------RedBall----101RB--
100---------------------BlueBall---102BB--
200---Bubbles---1.24----------------------
200---------------------RedWand----201RW--
200---------------------BlueWand---202BW--
(scusate se quelli sono difficili da leggere - non sapeva quale altro modo per mostrare un tavolo)
Ricorda che questo è un esempio stupefacente stordito e il proverbiale "usa un JOIN!" la risposta non è applicabile (cioè so già come unirmi a loro ma non è quello che voglio nel risultato finale).
Potrebbe essere che l'unico modo per ottenere questo è manipolare i dati nel software una volta che torna dal livello dati - se è così allora così sia. Ma spero che possa essere fatto in TSQL.
L'ID non collega i prodotti T2 al prodotto T1? Se no come fai a sapere che RedWand & BlueWand arrivano subito dopo Bubbles? – mundeep
Nella domanda dice: "La tabella 2 ha i campi ID (come nella tabella 1)" –
Grazie per tutte le risposte a tutti; questa è solo la mia prima domanda, ma questa sembra già una grande comunità. Inoltre, per coloro che criticano l''architettura' che la mia domanda implica, si prega di notare quello che ho detto sopra e sotto nella risposta accettata: questo è un esempio dumbed-down! Le "tabelle" nella mia domanda rappresentano effettivamente due query SELECT molto complesse che coinvolgono più tabelle e sottoquery, con aggregati e campi calcolati. Grazie ancora! – NateJ