我有一个数据库,其中一个表包含字段:
|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;
答案 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
是原始查询的名称。