您好我正在处理一些不友好的导入文件,导入为:
timestamp position name
001 2 Jon
001 3 Bob
001 1 Ann
001 4 Mike
002 1 Joe
002 2 Sue
003 1 Jeff
004 5 James
004 1 Andy
004 2 Beth
004 4 Mitch
004 3 Chris
并且想要创建一个如此显示的新表:
timestamp position1 position2 position3 position4 position5
001 Ann Jon Bob Mike
002 Joe Sue
003 Jeff
004 Andy Beth Chris Mitch James
通过浏览此论坛,我最接近解决方案的是:
SELECT pos1.timestamp, pos1.name AS position1, pos2.name AS position2
FROM table1 AS pos1 INNER JOIN table1 AS pos2
ON pos1.timestamp = pos2.timestamp
WHERE (((pos1.position)=1) AND ((pos2.position)=2))
我无法弄清楚如何将其扩展到我的规格,非常感谢任何帮助。
答案 0 :(得分:1)
尝试这样的事情
TRANSFORM First(Table.[name]) AS FirstOfname
SELECT Table.[timestamp]
FROM [Table]
GROUP BY Table.[timestamp]
PIVOT Table.[position];
我是使用MS Access Cross Tab Query Wizard创建的。
另外看看
一些更好的言论。
它应该已经保存了一个名为Table_Crosstab(或类似的东西)的查询。 右键单击此选项并选择设计视图。 在视图按钮上,选择Sql View。
您应该看到与
类似的内容TRANSFORM First(Table.name) AS FirstOfname
SELECT Table.timestamp, First(Table.name) AS [Total Of name]
FROM [Table]
GROUP BY Table.timestamp
PIVOT Table.position;
从第二行删除
, First(Table.name) AS [Total Of name]
这样你最终得到了
TRANSFORM First(Table.name) AS FirstOfname
SELECT Table.timestamp
FROM [Table]
GROUP BY Table.timestamp
PIVOT Table.position;
那应该是它。保存,你准备好了。
答案 1 :(得分:1)
你的新桌子设计不好。当传入数据中有第六个和第七个人时会发生什么?当您需要提取特定人员的所有数据时,也很难处理,因为您需要查询五列。