Ms access MS Access查询字符串聚合
正在MS Access中查找以下问题的查询- 下面是我的数据集,其中最后一行的值列为NULL。另外,通过对每个姓名+办公室+人员+类别执行Max(Value),我提取了这些数据,以避免多行有值Ms access MS Access查询字符串聚合,ms-access,Ms Access,正在MS Access中查找以下问题的查询- 下面是我的数据集,其中最后一行的值列为NULL。另外,通过对每个姓名+办公室+人员+类别执行Max(Value),我提取了这些数据,以避免多行有值 ID Name Office Person Category Value 1 FMR Americas Ben Global 7 1 FMR London Ben Global 5 1 FMR London Ben
ID Name Office Person Category Value
1 FMR Americas Ben Global 7
1 FMR London Ben Global 5
1 FMR London Ben Overall 4.2
156 Asset London Ben Global 13
156 Asset London Ben Overall
157 WSR Paris Zen Global 2
我的预期结果集如下所示-我期待十字标记或任何指标,这些指标将显示ID、姓名、办公室、人员组合对全局/覆盖类别有价值,或不在单行中。我知道这有点像“字符串聚合”
感谢您的意见。我对这个问题做了一些探讨。我创建了两个select查询:全局查询和全局查询 全球的 选择ID、姓名、办公室、人员、类别作为全局 从[你的桌子] 其中Category=“Global”和Value不为NULL 总体上 选择ID、姓名、办公室、人员、类别作为总体 从[你的桌子] 其中Category=“total”和Value不为NULL 然后,我创建了一个新查询来加入select查询 选择g.ID、g.Name、g.Office、g.Person、全局、全局 来自全球g 左键连接g.ID=o.ID和g.Name=o.Name和g.Office=o.Office和g.Person=o.Person上的整体o
希望这有帮助。首先,获取唯一id/姓名/办公室组合的列表:
SELECT DISTINCT ID, Name, Office, Person
FROM TableName
接下来,为每个类别创建子查询:
对于全球:
SELECT ID, Name, Office, Person
FROM TableName
WHERE Category="Global"
总体而言:
SELECT ID, Name, Office, Person
FROM TableName
WHERE Category="Overall"
最后,将子查询左键连接到主查询,并使用表达式显示X:
SELECT DISTINCT ID, Name, Office, Person
Iif(Global.ID Is Not Null, "X") AS IsGlobal,
Iif(Overall.ID Is Not Null, "X") AS IsOverall
FROM (TableName
LEFT JOIN (
SELECT ID, Name, Office, Person
FROM TableName
WHERE Category="Global"
) AS Global
ON TableName.ID=Global.ID
AND TableName.Name=Global.Name
AND TableName.Office=Global.Office
AND TableName.Person=Global.Person)
LEFT JOIN (
SELECT ID, Name, Office, Person
FROM TableName
WHERE Category="Overall"
) AS Overall
ON TableName.ID=Overall.ID
AND TableName.Name=Overall.Name
AND TableName.Office=Overall.Office
AND TableName.Person=Overall.Person
将子查询保存为Access查询并按名称引用保存的查询可能会更容易,而不是将整个子查询包含在此查询中。我正在尝试在前端执行此操作,但没有工作,但考虑了检查查询选项不确定执行此操作的原因值不为Null。。我想要这样的记录,不想排除,也不确定为什么在join中使用name/office/person根据最终结果,如果缺少值,您不想在列中放置X。删除该条件时,ID 156的“全局”和“总体”列中将放置一个X。在我的查询中,您需要至少在ID和Office上加入,但要包括ID、姓名、Office和Person,以防在更大的数据集中存在其他数据组合。
SELECT DISTINCT ID, Name, Office, Person
Iif(Global.ID Is Not Null, "X") AS IsGlobal,
Iif(Overall.ID Is Not Null, "X") AS IsOverall
FROM (TableName
LEFT JOIN (
SELECT ID, Name, Office, Person
FROM TableName
WHERE Category="Global"
) AS Global
ON TableName.ID=Global.ID
AND TableName.Name=Global.Name
AND TableName.Office=Global.Office
AND TableName.Person=Global.Person)
LEFT JOIN (
SELECT ID, Name, Office, Person
FROM TableName
WHERE Category="Overall"
) AS Overall
ON TableName.ID=Overall.ID
AND TableName.Name=Overall.Name
AND TableName.Office=Overall.Office
AND TableName.Person=Overall.Person