Al momento, non posso usare un database tipico, quindi sto usando temporaneamente Excel. Qualche idea?Esiste un modo per eseguire un cross join o un prodotto cartesiano in Excel?
Il
Al momento, non posso usare un database tipico, quindi sto usando temporaneamente Excel. Qualche idea?Esiste un modo per eseguire un cross join o un prodotto cartesiano in Excel?
Il
In questo articolo mi ha aiutato a eseguire un cross join in Excel:
http://www.excelguru.ca/blog/2016/05/11/cartesian-product-joins-for-the-excel-person/
Richiede Microsoft Aggiungi a Microsoft Power Query Per Excel https://www.microsoft.com/en-us/download/details.aspx?id=39379
Utilizzando VBA, è possibile. Ecco un piccolo esempio:
Sub SqlSelectExample()
'list elements in col C not present in col B
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
con.Open "Driver={Microsoft Excel Driver (*.xls)};" & _
"DriverId=790;" & _
"Dbq=" & ThisWorkbook.FullName & ";" & _
"DefaultDir=" & ThisWorkbook.FullName & ";ReadOnly=False;"
Set rs = New ADODB.Recordset
rs.Open "select ccc.test3 from [Sheet1$] ccc left join [Sheet1$] bbb on ccc.test3 = bbb.test2 where bbb.test2 is null ", _
con, adOpenStatic, adLockOptimistic
Range("g10").CopyFromRecordset rs '-> returns values without match
rs.MoveLast
Debug.Print rs.RecordCount 'get the # records
rs.Close
Set rs = Nothing
Set con = Nothing
End Sub
Hai 3 dimensioni qui: Dim1 (ABC), Dim2 (123), DIM3 (XYZ).
Ecco come si fa un prodotto cartesiano di 2 dimensioni che utilizzano standard di Excel e non VBA:
1) Tracciare DIM1 in verticale e in orizzontale Dim2. membri della dimensione concatenare sulle intersezioni:
2) di dati Unpivoting. Avvia la procedura guidata della tabella pivot usando ALT-D-P (non tenere premuto ALT, premilo una volta). Seleziona "Intervalli di consolidamento multipli" -> crea una singola pagina .. -> Seleziona tutte le celle (comprese le intestazioni!) E aggiungila all'elenco, premi avanti.
3) tracciare i risultanti valori verticale e smontare le stringhe concatenate
Voilà, hai il cross join. Se hai bisogno di un'altra dimensione aggiunta, ripeti questo algoritmo.
Cheers,
Costantino.
Un secondo, la formattazione viene macellata in questo post. – user1248831
Controlla questo articolo http://www.nullskull.com/q/10113257/need-a-cross-join-of-the-rows-from-two-excel-sheets.aspx – Rahul