将字段值转换为列标题 - MSAccess

时间:2016-08-11 09:13:17

标签: sql database ms-access

我有一个数据库,其中一个表包含字段:

|Tag|Parameter|Value|

每个标签可以有多个参数,但每个参数只有一个值。

例如:

|Tag|Parameter|Value|
|t10|HHAPRI   |154  |
|t10|LLAPRI   |4    |
|t16|HHAPRI   |12   |

我如何才能将这个理想情况下的查询转换为:

|Tag|HHAPRI|LLAPRI|
|T10|154   |4     |
|T16|12    |      |

每个标记只出现一次,所有参数都作为列标题,值输入到字段中。

为此目的,这是首先生成表格的Op Parameter可以与Parameter处理的SQL查询。

    SELECT tblAlarmPriorities.*, tblOperatingMode.Parameter AS [Op Parameter], tblOperatingMode.Value AS [Op Value], tblOperatingMode.Correct_Operating_Mode, tblOperatingMode.Alarm_Low_Low, tblOperatingMode.Alarm_Low, tblOperatingMode.Alarm_High_High, tblOperatingMode.Alarm_High, tblLookUp.ParameterDesc AS AlarmParamDesc, tblLookUp_1.ParameterDesc AS OpParamDesc, *
FROM ((tblAlarmPriorities LEFT JOIN tblLookUp ON tblAlarmPriorities.Parameter = tblLookUp.ParameterIdent) INNER JOIN tblOperatingMode ON tblAlarmPriorities.CS_Tag = tblOperatingMode.CS_Tag) LEFT JOIN tblLookUp AS tblLookUp_1 ON tblOperatingMode.PARAMETER = tblLookUp_1.ParameterIdent;

2 个答案:

答案 0 :(得分:2)

这是交叉表(TRANSFORM)查询。

我建议使用“新查询”向导进行交叉表查询。

  • Tag是行标题。
  • Parameter是列标题。
  • Value是值:),使用适当的聚合函数(Sum或First例如。)

答案 1 :(得分:1)

交叉表查询会给出您之后的结果:

TRANSFORM SUM(sValue) AS SumOfsValue
SELECT Tag
FROM Table1
GROUP BY Tag
PIVOT Parameter

其中Table1是原始查询的名称。