MS Access SQL在行数据和列名上复制Excel vlookup

时间:2018-11-09 02:12:08

标签: sql ms-access

我现在可以在Excel中使用它,但是由于记录的数量,我需要将其移到Access中。

表1:

| LookupValue        | Object Name | Attribute  | Data  |
|--------------------|-------------|------------|-------|
| Object1_Attribute1 | Object1     | Attribute1 | Data1 |
| Object1_Attribute2 | Object1     | Attribute2 | Data2 |
| Object2_Attribute1 | Object2     | Attribute1 | Data3 |
| Object2_Attribute2 | Object2     | Attribute2 | Data4 |

(实际上超过100个属性)

表2(查找前):

| Object Name | Attribute1 | Attribute2 |
|-------------|------------|------------|
| Object1     |            |            |
| Object2     |            |            |

表2(vlookup之后):

| Object Name | Attribute1 | Attribute2 |
|-------------|------------|------------|
| Object1     | Data1      | Data2      |
| Object2     | Data3      | Data4      |

如何在Access中复制它?

2 个答案:

答案 0 :(得分:1)

考虑MS Access'crosstab query,它在 Attribute 列中最多可以包含255个不同的值:

TRANSFORM MAX(Data) As MaxData
SELECT [Object Name]
FROM mytable
GROUP BY [Object Name]
PIVOT [Attribute]

答案 1 :(得分:0)

我认为您可以通过条件聚合来做到这一点:

select object_name,
       max(iif(Attribute = "Attribute1", Data, null)) as Attribute1,
       max(iif(Attribute = "Attribute2", Data, null)) as Attribute2,
       . . .
from t
group by object_name;