使用多选交叉 table

Cross table with multiselect

我有一个 table 有 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;

如果我得到的字段只有一个值,比如第三列(完整的数据源必须像单值样式),这会很好用 但在我的例子中,我将字符串用于多选...

如果我尝试将此查询符合一个数据源,该数据源在值之间填充了“”,结果将完全混乱

有什么关于查询应该如何获得此结果的建议吗?

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

在 Sql 服务器中有更强大的选项可用。
来自这里:Split function equivalent in T-SQL? ,
你应该阅读这个页面: http://www.sommarskog.se/arrays-in-sql-2005.html#tablelists