Ich arbeite mit zwei (2) Tabellen in meiner MS Access-Datenbank. ChangeCodes und Artikel. ChangeCodes hat die folgenden Spalten (Präfix, Suffix und Beschreibung).MS Access-Tabelle: Füllen einer Spalte basierend auf anderen mit SWITCH
Hier sind Beispielzeilen:
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
Artikel hat die folgenden Spalten (ITEM_ID, ITEM_NAME, Entered_Date, Defect_Num, Mod_Num, User_Entered, Code_Flag, Complete_Flag)
Hier sind Beispielzeilen:
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
Wie Sie sehen, Item_ID ist eine Kombination der ChangeCodes.Preix und ein 4-stelliges Suffix. Ich möchte das Suffix jeder Zeile der ChangeCodes-Tabelle mit dem MAX-Wert der entsprechenden Item_ID in der Items-Tabelle auffüllen. Ist das SQL das wird das tun? Ich habe Folgendes versucht, aber die Syntax ist nicht korrekt.
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;
Irgendeine Idee, wie man es erreicht?
Beachten Sie auch, dass Sie beginnen, von 0 zu zählen, so dass dies geeigneter sein kann Max (CInt (Mid (Items.Item_ID), 2,4)) oder Max (CDec (Mid (Items.Item_ID), 2,4)) . – mdiaz
Keine der Spalten sind als Zahlen definiert. Die meisten sind Kurztext. Das innere SELECT scheint unabhängig vom SWITCH zu funktionieren (Fall). SELECT Mid (Max (Items.Item_ID), 3,4) AS Expr1 FROM Artikel WHERE Items.Item_ID LIKE 'TC *'; gibt vier (4) Ziffern zurück, die in dieser Präfixgruppe am höchsten sind - was ich will. –