用于在MS-Access中透视数据的SQL查询

时间:2017-08-17 06:41:55

标签: sql ms-access

我有一个包含三个字段的表:ticketNumber,attendee和tableNumber。

e.g。

ticketNumber | attendee | tableNumber
------------ | -------- | -----------
     A1      | alex     |     3  
     A2      | bret     |     2  
     A3      | chip     |     1  
     A4      | dale     |     2  
     A5      | eric     |     2  
     A6      | finn     |     3  

我想生成一个表,每个tableNumber都作为一个字段,并且名称列表位于该tableNumber。

  1  |  2   | 3
-----|------|-----
chip | bret | alex 
     | dale | finn
     | eric |

我一直在研究的问题是:

transform attendee
select attendee
from registration
group by tableNumber, name
pivot tableNumber

这给了我:

attendee |  1   |  2   |  3 
---------|------|------|----- 
chip     | chip |      | 
bret     |      | bret |
dale     |      | dale |
eric     |      | eric |
alex     |      |      | alex
finn     |      |      | finn

我知道如何使用PivotTableView获取我需要的表,但我想知道如何使用查询来执行它,以便我可以在我正在使用的代码中使用它。我不确定如何编写此查询而无需选择字段(在我的情况下,选择与会者)。还可以生成没有空单元格的表吗?

谢谢:)

1 个答案:

答案 0 :(得分:0)

该表需要一个唯一的标识符字段,该字段将正确排序,我不认为可以依赖ticketNumber。自动编号应该服务。然后尝试:

TRANSFORM First(Table1.attendee) AS FirstOfattendee SELECT DCount("*","Table1","tableNumber=" & [tableNumber] & " AND ID<" & [ID])+1 AS RowSeq FROM Table1 GROUP BY DCount("*","Table1","tableNumber=" & [tableNumber] & " AND ID<" & [ID])+1 PIVOT Table1.tableNumber;