Sql 从Access表的每个记录的不同字段中检索值

Sql 从Access表的每个记录的不同字段中检索值,sql,string,ms-access,ms-access-2010,eval,Sql,String,Ms Access,Ms Access 2010,Eval,我将非常感谢您的帮助,因为我在这方面遇到了一些严重的问题 背景: 我有一个独特的记录列表。对于每个记录,我都有一个单调递增的模式(a、B或C),并为其指定一个发展位置(1到5) 因此,这三种模式中的每一种都在五个代表开发周期的字段中列出 问题: 我需要从每行的不同字段中检索与相关开发周期相关的百分比。它应该在一个名为“Output”的列中 示例: 抱歉,我不知道如何在这里附加一个表,但是字段在下面,表是这些字段的转置 ID - (1,2,3,4,5) Pattern - (A, B, C, A,

我将非常感谢您的帮助,因为我在这方面遇到了一些严重的问题

背景:

我有一个独特的记录列表。对于每个记录,我都有一个单调递增的模式(a、B或C),并为其指定一个发展位置(1到5)

因此,这三种模式中的每一种都在五个代表开发周期的字段中列出

问题:

我需要从每行的不同字段中检索与相关开发周期相关的百分比。它应该在一个名为“Output”的列中

示例:

抱歉,我不知道如何在这里附加一个表,但是字段在下面,表是这些字段的转置

ID - (1,2,3,4,5)
Pattern - (A, B, C, A, C)
Dev - (1,5,3,4,2)
1 - (20%, 15%, 25%, 20%, 25%)
2 - (40%, 35%, 40%, 40%, 40%)
3 - (60%, 65%, 60%, 60%, 60%)
4 - (80%, 85%, 65%, 80%, 65%)
5 - (100%, 100%, 100%, 100%, 100%)
Output - (20%, 100%, 60%, 80%, 40%)
在MS Excel中,我可以简单地使用HLOOKUP或OFFSET函数来实现这一点。但在Access中如何执行此操作?到目前为止,我想到的最好的方法是Output:Eval([Category]),但这似乎没有达到我想要的效果,即选择“Dev”字段,并在构建表达式时将其作为字段处理

实际上,我有100多个开发周期可以使用,还有800多个不同的模式,所以我认为“切换”方法在这里不起作用

提前感谢,, alch84假设

  • [ID]是唯一的列(主键),并且
  • [Output]的源列仅取决于[Dev]的值
  • 那么这似乎是可行的:

    UPDATE-tblAlvo-SET-Output=DLOOKUP(“[”&Dev&“]),“tblAlvo”,“ID=”&ID)
    
    之前:

    ID模式开发1 2 3 4 5输出
    --  -------  ---  --  --  --  --  ---  ------
    1A 120406080100
    2 B 5 15 35 65 85 100
    3 C 3 25 40 60 65 100
    4 A 4 20 40 60 80 100
    5 C 2 25 40 60 65 100
    
    之后:

    ID模式开发1 2 3 4 5输出
    --  -------  ---  --  --  --  --  ---  ------
    1A 12040608010020
    2 B 5 15 35 65 85 100 100
    3 C 3 25 40 60 65 100 60
    4 A 4 20 40 60 100 80
    5 C 2 25 40 60 65 100 40
    
    假设

  • [ID]是唯一的列(主键),并且
  • [Output]的源列仅取决于[Dev]的值
  • 那么这似乎是可行的:

    UPDATE-tblAlvo-SET-Output=DLOOKUP(“[”&Dev&“]),“tblAlvo”,“ID=”&ID)
    
    之前:

    ID模式开发1 2 3 4 5输出
    --  -------  ---  --  --  --  --  ---  ------
    1A 120406080100
    2 B 5 15 35 65 85 100
    3 C 3 25 40 60 65 100
    4 A 4 20 40 60 80 100
    5 C 2 25 40 60 65 100
    
    之后:

    ID模式开发1 2 3 4 5输出
    --  -------  ---  --  --  --  --  ---  ------
    1A 12040608010020
    2 B 5 15 35 65 85 100 100
    3 C 3 25 40 60 65 100 60
    4 A 4 20 40 60 100 80
    5 C 2 25 40 60 65 100 40
    
    我删除了MySQL标记,因为你的问题与MySQL无关。发布示例数据:那么你有两个表?这些模式属于一个单独的表,但我不清楚您的数据库。最终,这可能是一个简单的连接(或子查询)。如果我能更好地理解这种关系和列名,我会发布一个查询。您好@shawnt00,谢谢您的回复。Gord Thompson的下表恰当地反映了我正在尝试做的事情,他建议的下表查询某种程度上起到了作用,但问题是缺少主键(可能是因为我使用的是链接Excel表?)。所以多重条件参数对我来说不太合适…我删除了MySQL标记,因为你的问题与MySQL无关。发布示例数据:那么你有两个表?这些模式属于一个单独的表,但我不清楚您的数据库。最终,这可能是一个简单的连接(或子查询)。如果我能更好地理解这种关系和列名,我会发布一个查询。您好@shawnt00,谢谢您的回复。Gord Thompson的下表恰当地反映了我正在尝试做的事情,他建议的下表查询某种程度上起到了作用,但问题是缺少主键(可能是因为我使用的是链接Excel表?)。所以多重条件参数对我来说不太合适…谢谢Gord-看起来不错,但是如果我没有主键呢?我知道这种做法很糟糕,但我的Access表是从没有主键的Excel工作簿导入的。如果
    (ID,Pattern,Dev)
    唯一标识行,则可以将这些行添加到DLOOKUP的WHERE参数中(第三个参数,
    “ID=”和Pattern=“&Pattern&……
    )。否则,您可以让导入的Excel为您创建一个自动编号主键列。谢谢@GordThompson。1.这个公式运行了,但在字段中给出了“#错误!”<代码>Dlookup(“[”&[Dev]&“]”,“tblAlvo”,“C Lob=“&[C Lob]”和P Item=“&[P Item]&”和Year=”和[Year])。2.“从Excel导入”不允许我创建自动编号主键列(至少因为我使用链接表直接链接到数据源)。(1)DLookup示例与问题中的字段不匹配。(2) 您的第三个参数缺少
    &
    运算符,因此语法不正确。(3)
    “C Lob=”&[C Lob]…
    不起作用,它需要是
    “[C Lob]=”&[C Lob]…
    (4)如果任何字段是文本字段,则它们需要在文本值周围使用
    分隔符。(5) “从Excel导入”和“链接到Excel”的含义不同。请编辑您的问题以显示您真正在做什么。谢谢Gord-看起来不错,但如果我没有主键怎么办?我知道这是个坏习惯,但是