[英]Access SQL Query IIF statement Too Complex
我正在使用Access数据库并使用IFF编写查询以输出类似这样的缩写状态
IIf(Trim(CtblStates.StateName) = 'New York', 'NY',
IIf(Trim(CtblStates.StateName) = 'Maryland', 'MD',
IIf(Trim(CtblStates.StateName) = 'Virginia', 'VA',
IIf(Trim(CtblStates.StateName) = 'New Jersey', 'NJ',
IIf(Trim(CtblStates.StateName) = 'District of Columbia', 'DC',
IIf(Trim(CtblStates.StateName) = 'Florida', 'FL',
IIf(Trim(CtblStates.StateName) = 'West Virginia', 'WV',
IIf(Trim(CtblStates.StateName) = 'Georgia', 'GA',
IIf(Trim(CtblStates.StateName) = 'Alabama', 'AL',
IIf(Trim(CtblStates.StateName) = 'Alaska', 'AK',
IIf(Trim(CtblStates.StateName) = 'California', 'CA',
IIf(Trim(CtblStates.StateName) = 'Pennsylvania', 'PA',
IIf(Trim(CtblStates.StateName) = 'Delaware', 'DE',
CtblStates.StateName ))))))))))))) AS State,
当我尝试添加更多状态时,出现“ IFF语句过于复杂”。 我知道您只能添加这么多IIF语句,但是我需要处理50个州中的每个州。 我该如何解决?
谢谢
为了使@JohnCappelletti的建议更容易,SQL添加新表如下。 然后将其加入您的查询中。
CREATE TABLE states (stateName CHAR, stateAbbr CHAR);
INSERT INTO states (stateName, stateAbbr) VALUES ('Alabama','AL');
INSERT INTO states (stateName, stateAbbr) VALUES ('Alaska','AK');
INSERT INTO states (stateName, stateAbbr) VALUES ('Arizona','AZ');
INSERT INTO states (stateName, stateAbbr) VALUES ('Arkansas','AR');
INSERT INTO states (stateName, stateAbbr) VALUES ('California','CA');
INSERT INTO states (stateName, stateAbbr) VALUES ('Colorado','CO');
INSERT INTO states (stateName, stateAbbr) VALUES ('Connecticut','CT');
INSERT INTO states (stateName, stateAbbr) VALUES ('Delaware','DE');
INSERT INTO states (stateName, stateAbbr) VALUES ('Florida','FL');
INSERT INTO states (stateName, stateAbbr) VALUES ('Georgia','GA');
INSERT INTO states (stateName, stateAbbr) VALUES ('Hawaii','HI');
INSERT INTO states (stateName, stateAbbr) VALUES ('Idaho','ID');
INSERT INTO states (stateName, stateAbbr) VALUES ('Illinois','IL');
INSERT INTO states (stateName, stateAbbr) VALUES ('Indiana','IN');
INSERT INTO states (stateName, stateAbbr) VALUES ('Iowa','IA');
INSERT INTO states (stateName, stateAbbr) VALUES ('Kansas','KS');
INSERT INTO states (stateName, stateAbbr) VALUES ('Kentucky','KY');
INSERT INTO states (stateName, stateAbbr) VALUES ('Louisiana','LA');
INSERT INTO states (stateName, stateAbbr) VALUES ('Maine','ME');
INSERT INTO states (stateName, stateAbbr) VALUES ('Maryland','MD');
INSERT INTO states (stateName, stateAbbr) VALUES ('Massachusetts','MA');
INSERT INTO states (stateName, stateAbbr) VALUES ('Michigan','MI');
INSERT INTO states (stateName, stateAbbr) VALUES ('Minnesota','MN');
INSERT INTO states (stateName, stateAbbr) VALUES ('Mississippi','MS');
INSERT INTO states (stateName, stateAbbr) VALUES ('Missouri','MO');
INSERT INTO states (stateName, stateAbbr) VALUES ('Montana','MT');
INSERT INTO states (stateName, stateAbbr) VALUES ('Nebraska','NE');
INSERT INTO states (stateName, stateAbbr) VALUES ('Nevada','NV');
INSERT INTO states (stateName, stateAbbr) VALUES ('New Hampshire','NH');
INSERT INTO states (stateName, stateAbbr) VALUES ('New Jersey','NJ');
INSERT INTO states (stateName, stateAbbr) VALUES ('New Mexico','NM');
INSERT INTO states (stateName, stateAbbr) VALUES ('New York','NY');
INSERT INTO states (stateName, stateAbbr) VALUES ('North Carolina','NC');
INSERT INTO states (stateName, stateAbbr) VALUES ('North Dakota','ND');
INSERT INTO states (stateName, stateAbbr) VALUES ('Ohio','OH');
INSERT INTO states (stateName, stateAbbr) VALUES ('Oklahoma','OK');
INSERT INTO states (stateName, stateAbbr) VALUES ('Oregon','OR');
INSERT INTO states (stateName, stateAbbr) VALUES ('Pennsylvania','PA');
INSERT INTO states (stateName, stateAbbr) VALUES ('Rhode Island','RI');
INSERT INTO states (stateName, stateAbbr) VALUES ('South Carolina','SC');
INSERT INTO states (stateName, stateAbbr) VALUES ('South Dakota','SD');
INSERT INTO states (stateName, stateAbbr) VALUES ('Tennessee','TN');
INSERT INTO states (stateName, stateAbbr) VALUES ('Texas','TX');
INSERT INTO states (stateName, stateAbbr) VALUES ('Utah','UT');
INSERT INTO states (stateName, stateAbbr) VALUES ('Vermont','VT');
INSERT INTO states (stateName, stateAbbr) VALUES ('Virginia','VA');
INSERT INTO states (stateName, stateAbbr) VALUES ('Washington','WA');
INSERT INTO states (stateName, stateAbbr) VALUES ('West Virginia','WV');
INSERT INTO states (stateName, stateAbbr) VALUES ('Wisconsin','WI');
INSERT INTO states (stateName, stateAbbr) VALUES ('Wyoming','WY');
不要那样做!
使用“字典表”。 将新表添加到MS Access数据库。 定义2列。 一个-“全名”,第二个-“短名”。 然后添加您的相应值:
"New York" | "NY"
"Maryland" | "MD"
等等
现在,使用join
:
SELECT a.*, b.ShortName
FROM YourTable As a INNER JOIN DictionaryTable AS b ON a.StateName = b.FullName;
随意o改进对您需求的查询。
因为您的表名,我认为您需要在表CtblStates
上创建一个新字段:
[CtblStates]
添加一个名为State
的新字段,并根据每一行填充状态数据。 [CtblStates].State
替换查询
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.