Sql 有没有办法在excel中执行交叉联接或笛卡尔乘积?

Sql 有没有办法在excel中执行交叉联接或笛卡尔乘积?,sql,database,excel,join,cross-join,Sql,Database,Excel,Join,Cross Join,目前,我无法使用典型的数据库,所以我暂时使用excel。有什么想法吗 尝试使用交叉连接。阅读更多 您可以使用表达式交叉联接(表1,表2)创建笛卡尔积。本文帮助我在Excel中执行交叉联接: 它需要Microsoft加载项 Microsoft Power Query For Excel 使用VBA,您可以。下面是一个小例子: Sub SqlSelectExample() 'list elements in col C not present in col B Dim con As ADO

目前,我无法使用典型的数据库,所以我暂时使用excel。有什么想法吗


尝试使用
交叉连接。阅读更多


您可以使用表达式
交叉联接(表1,表2)
创建笛卡尔积。

本文帮助我在Excel中执行交叉联接:

它需要Microsoft加载项 Microsoft Power Query For Excel
使用VBA,您可以。下面是一个小例子:

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

这里有3个尺寸:dim1(ABC)、dim2(123)、dim3(XYZ)

以下是如何使用标准Excel和非VBA制作二维笛卡尔积:

1) 垂直打印dim1,水平打印dim2。连接交点上的标注成员:

2) 取消激励数据。使用ALT-D-P启动数据透视表向导(不要按住ALT键,按一次)。选择“多个合并范围”-->创建单个页面..-->选择所有单元格(包括标题!)并将其添加到列表中,然后按“下一步”

3) 垂直绘制生成的,并分解连接的字符串

瞧,你有交叉连接。如果需要添加其他维度,请再次重复此算法

干杯


Constantine.

这里有一种非常简单的方法,可以使用透视表生成任意数量列表的笛卡尔乘积:

该示例适用于两个列表,但适用于任意数量的表和/或列


在创建数据透视表之前,您需要。

一秒钟后,本帖将对格式进行修改。查看本文,问题是关于excel的。Power Query已成为标准excel 2016的一部分,不再是外接程序。