使用多选交叉 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
我有一个 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