我在MS Access数据库中使用两(2)个表。 ChangeCodes和Items。 ChangeCodes具有以下列(前缀,后缀和描述)。
以下是示例行:
Prefix Suffix Description
BE 2178 Business Enhancement
DP 1033 Development Problem
PE 2137 Performance Enhancement
PP 1687 Production Problem
TC 1001 Temporary Change
TE 1003 Technical Enhancement
WA 1005 Work Around
Items包含以下列(Item_ID,Item_Name,Entered_Date,Defect_Num,Mod_Num,User_Entered,Code_Flag,Complete_Flag)
以下是示例行:
BE0999 Fee Increment Stuffer 8/9/2001 NW5639 nakiris Yes Yes
PE1084 Regionalizing RA99Z5UT 5/27/2008 NW7128 LUCKMAB Yes No
PE1480 Resiliency task 300 2/22/2013 NW7768 SOUNDM2 No No
PP1092 Bad check 11/3/2003 NW6828 sangis1 No No
PP1093 To Avoid contention 11/7/2003 NW6829 narass1 No No
PP1094 Change to ensure ZERO 11/12/2003 NW6830 paletic No No
如您所见,Item_ID是ChangeCodes.Preix和4位数后缀的组合。我希望使用Items表中相应Item_ID的MAX值填充ChangeCodes表的每一行的后缀。这个SQL会这样做吗?我尝试了以下但语法不正确。
SELECT
IIf([ChangeCodes.Prefix] = "BE", SELECT Mid(Max(Items.Item_ID),3,4) AS Expr1
FROM Items
WHERE Items.Item_ID LIKE 'BE*';),
IIf([ChangeCodes.Prefix] = "DP", SELECT Mid(Max(Items.Item_ID),3,4) AS Expr1
FROM Items
WHERE Items.Item_ID LIKE 'DP*';),
IIf([ChangeCodes.Prefix] = "PE", SELECT Mid(Max(Items.Item_ID),3,4) AS Expr1
FROM Items
WHERE Items.Item_ID LIKE 'PE*';),
IIf([ChangeCodes.Prefix] = "PP", SELECT Mid(Max(Items.Item_ID),3,4) AS Expr1
FROM Items
WHERE Items.Item_ID LIKE 'PP*';),
IIf([ChangeCodes.Prefix] = "TC", SELECT Mid(Max(Items.Item_ID),3,4) AS Expr1
FROM Items
WHERE Items.Item_ID LIKE 'TC*';),
IIf([ChangeCodes.Prefix] = "TE", SELECT Mid(Max(Items.Item_ID),3,4) AS Expr1
FROM Items
WHERE Items.Item_ID LIKE 'TE*';),
IIf([ChangeCodes.Prefix] = "WA", SELECT Mid(Max(Items.Item_ID),3,4) AS Expr1
FROM Items
WHERE Items.Item_ID LIKE 'WA*';)
As Suffix
FROM ChangeCodes;
知道如何完成它吗?
答案 0 :(得分:0)
如果我理解这一点,那么您的表项ID就会包含一些值,并且您希望根据项目表填充更改代码。
在您的查询中,您有Mid(Max(Items.Item_ID),3,4)。 Max仅适用于数字,Item_ID是字符串" BE0999"。
您可以尝试将该表达式更改为Max(CDec(Mid(Items.Item_ID),3,4))或Max(CInt(Mid(Items.Item_ID),3,4))。
mid函数会为你提供这部分代码" 0999"但是在你使用CI或CDec使用Max之前,它仍然需要将它转换为数字。
不确定它是否有用但值得一试。