我有以下数据:
| ID | TYPE | USER_ID |
|----------|----------|----------|
| 1 | A | 7 |
| 1 | A | 8 |
| 1 | B | 6 |
| 2 | A | 9 |
| 2 | B | 5 |
我正在尝试创建一个返回
的查询| ID | RESULT |
|----------|----------|
| 1 | 7, 8, 6 |
| 2 | 9, 5 |
USER_ID值必须按TYPE属性排序。
由于我正在使用MS ACCESS,我正试图转动。我尝试了什么:
TRANSFORM first(user_id)
SELECT id, type
FROM mytable
GROUP BY id, type
ORDER BY type
PIVOT user_id
错误:
交叉表列标题太多(4547)。
我在语法中遗漏了一些东西。但是,它似乎是错误的,因为需要将first()
聚合更改为其他内容以连接结果。
PS:我正在使用MS-ACCESS 2007.如果您只使用SQL(没有供应商功能或存储过程)知道SQL-Server或Oracle的解决方案,我可能会接受您的回答,因为它会帮助我找到解决这个问题的方法。
答案 0 :(得分:1)
您不想使用 PIVOT 。 Pivot将创建一个以每个用户ID(1 - 7)命名的列。您的 TYPE 字段似乎也没有做任何事情。
不幸的是,在SQL Server中执行此操作需要使用访问中未提供的function( FOR XML路径)。
这是一个与similar Access function相关联的链接。