私はMS Accessデータベースで2つのテーブルを使用しています。変更コードとアイテム。 ChangeCodesには、次の列(接頭辞、接尾辞、説明)があります。MSアクセステーブル:SWITCHを使用して他の列に基づいて1つの列を設定する
は、ここでのサンプル行です:
: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
アイテム次の列(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桁の接尾辞の組み合わせです。 ChangeCodesテーブルの各行のサフィックスにItemsテーブルの対応するItem_IDのMAX値を設定したいとします。これを行う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から数えて開始することに注意してください。これにより、Max(CInt(Mid)、Items.Item_ID)、2,4)またはMax(CDec(Mid(Items.Item_ID)、2,4)) 。 – mdiaz
列のいずれも数値として定義されていません。ほとんどが短文です。内側のSELECTはSWITCH(ケース)とは独立して動作するようです。 SELECT Mid(Max(Items.Item_ID)、3,4)AS Expr1 Items.Item_ID LIKE 'TC *';そのプレフィックスグループの中で最も高い4桁の数字を返します。これは私が望むものです。 –