Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS Access查询字符串聚合_Ms Access - Fatal编程技术网

Ms access MS Access查询字符串聚合

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

正在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       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