TRANSFORM SUM(iif([Attrib]<>'',1,0)) SELECT [td].[Name] FROM [td] GROUP BY [Name] PIVOT [Attrib]

解决方案 »

  1.   

    select a.序号 ,b.姓名,(b.属性1+b.属性2) as 属性
    from ta as a inner join tb as b
         on a.序号 =b.序号 
    order by a.序号 asc
      

  2.   

    我给的是一个SQL啊,
    用它打开表就行了,
    但是它没有ID项。这个查询适合你的属性就是几种的情况,
    如果你的每条记录的属性都不一样这样用就不好了。
    这格查询查完了得到的表是由下面的列组成:
     Name  属性1  属性2  属性3  ……如果谁有那项属性相应的列的值就是1
    当然你需要使用的是VB的数据控件,
    或和ADO使用Access的驱动。不知道这样说明白了些么?
    给你一个代码试试吧。
    希望我的理解算是正确的。
    假设你的tb的字段是ID Name Attrib
    数据库存储在G:\b.mdb
    你安装了Access2000,所以使用ODBC的MS Access Database驱动。
    窗体上有一个DataGrid控件,而且引用了Ado2.1
    仍然强调一下,这样只适用属性有限的情况。
    '-----------------------------------------
    Option ExplicitPrivate rs As New ADODB.RecordsetPrivate Sub Form_Load()    rs.CursorLocation = adUseClient
        rs.Open "TRANSFORM SUM(iif([Attrib]<>'',1,0)) SELECT [td].[Name] FROM [td] GROUP BY [Name] PIVOT [Attrib]", "DSN=MS Access Database;DBQ=g:\b.mdb"
        
        Set DataGrid1.DataSource = rs
        Dim l As Long
        For l = 0 To DataGrid1.Columns.Count - 1
            If l = 0 Then
                DataGrid1.Columns(l).Width = 1000
            Else
                DataGrid1.Columns(l).Width = 500
                DataGrid1.Columns(l).Alignment = dbgCenter
            End If
        Next l
        
    End Sub