与multiselect的交叉表

时间:2015-08-28 08:37:48

标签: ms-access ms-access-2010

我有一个包含2列的表格,其中填充了字符串

CREATE TABLE [tbl_text]
 (
  [directoryName] nvarchar(200),
  [text1] nvarchar(200),
  [text2] nvarchar(200)
  )

字符串构建如下

| Text1      |   Text2  |
|------------|----------|
|tz1 tz3 tz2 | al1 al2  |
|    tz1 tz3 | al1 al3  |
|        tz2 | al3      |
|    tz3 tz2 | al1 al2  |

现在我想计算TestN或TextN导致

的次数
| Text1 |  al1 |  al2 |  al3 |
|-------|------|------|------|
| tz1   |   2  |   1  |  1   |
| tz2   |   2  |   2  |  1   |
| tz3   |   3  |   2  |  1   |

我尝试使用像这样的SQL查询来解决它:

TRANSFORM Count(tt.directoryName) AS Value
SELECT tt.Text1
FROM tbl_text as tt
GROUP BY tt.Text1
PIVOT tt.Text2;

如果我只使用一个像第三列这样的值的字段(完整的数据源必须像一个单值样式),这样可以正常工作 但在我的情况下,我使用字符串进行多选...

如果我尝试将此查询符合充满"的数据源。 "在值之间,结果完全搞砸了

查询如何获得此结果的任何建议?

1 个答案:

答案 0 :(得分:0)

您必须先将Text1 / Text2中的字符串拆分,然后才能对它们执行任何操作。在VBA中,您循环记录集,使用Split()函数并将结果插入临时表。

在Sql Server中,有更强大的选项可用 来自这里:http://www.sommarskog.se/arrays-in-sql-2005.html#tablelists
你应该阅读这个页面: Here