SQL查询将字段元素转换为列

时间:2013-08-05 18:57:22

标签: sql ms-access

我有一张看起来像这样的表

[Serial Number]   [EventNumber]    [DateTimeStamp]     [DataElement]  [DataValue]
XXXX1                 1          7/7/2013 10:00 AM        Height         62
XXXX1                 1          7/7/2013 10:00 AM        Mass           12
XXXX1                 1          8/3/2013 3:00 PM         Length         13
XXXX1                 1          8/3/2013 3:00 PM         Width          60
XXXX1                 2          10/10/2013 10:00 AM      Height         22
XXXX1                 2          10/10/2013 10:00 AM      Mass           21
XXXX1                 2          10/12/2013 10:00 AM      Length         7
XXXX1                 2          10/12/2013 11:00 AM      Width          67

工厂中的工人通过Web界面输入数据,最终在此表中。该表包含数百个序列号,每个序列号最多可包含19个或更多事件。每个事件都是一些被测量的参数。在进行测量之后,进行一些修改,并且对于连续事件再次进行测量。

我想通过SQL查询为一个特定的序列号创建一个看起来像这样的表

[Serial Number]  [EventNumber] [Height]    [Mass]    [Width]   [Lenght]
XXXX1                  1           62          12       13        20
XXXX1                  2           10          etc     etc
XXXX1                  3           etc
XXXX1                  4           etc

我知道我需要使用数据透视表,但我不一定能提出正确的SQL代码。

注意:此示例中使用的数据已组成,但结构完全相同。

提前致谢

1 个答案:

答案 0 :(得分:0)

试试这个:

TRANSFORM Sum(t.DataValue) AS SumOfDataValue
SELECT t.[Serial Number], t.EventNumber
FROM Table1 AS t
GROUP BY t.[Serial Number], t.EventNumber
PIVOT t.DataElement;

如果有任何问题,请告诉我。