|
本帖最后由 wuxiang_123 于 2012-4-26 13:03 编辑
我的答案:
语句一:
- SELECT 部门,工号,姓名 FROM [数据$],[汇总$A1:A2] WHERE SWITCH(餐段='早餐',早餐,餐段='中餐',中餐,餐段='晚餐',晚餐,餐段='夜宵',夜宵,餐段='加特',加特)
复制代码 SWITCH:
SWITCH(表达式1,表达式1成立时的返回值,表达式2,表达式2成立时的返回值,……,表达式X,表达式X成立时的返回值)
SWITCH按从左到右顺序执行,但只要其中任意一个表达式错误,则会出错,如分母为0的表达式,此时不能执行SWITCH。如果所有表达式均不成立,则返回NULL,
如果返回值是字段表达式,则返回记录,但如果表达式放在条件子句中(如WHERE子句),则作为条件返回,如果表达式为逻辑表达式,则返回逻辑值(TRUE/FALSE、-1/0)。
WHERE SWITCH(餐段='早餐',早餐,餐段='中餐',中餐,餐段='晚餐',晚餐,餐段='夜宵',夜宵,餐段='加特',加特)意思是:如果餐段项是“早餐”,则返回WHERE 早餐条件,如果餐段项是“中餐”,则返回WHERE 中餐条件,其余表达式意义类推。
WHERE 字段的意思是返回字段不为0的记录,这个0可以是文本,可以是数值。需要注意的是,由于NULL表示未知值,所以,NULL不符号WHERE 字段的条件,因为NULL和0的比较是未知的,凡是和NULL进行的逻辑比较,其结果也是未知的。若然作为条件,则NULL必不被返回。
WHERE SWITCH(餐段='早餐',早餐,餐段='中餐',中餐,餐段='晚餐',晚餐,餐段='夜宵',夜宵,餐段='加特',加特)这个语句中,没有加' '的,均表示为字段,加' '的表示为文本常量。
语句二:
- SELECT 部门,工号,姓名 FROM [数据$],[汇总$A1:A2] WHERE CHOOSE(INSTR('早中晚夜加',LEFT(餐段,1)),早餐,中餐,晚餐,夜宵,加特)
复制代码 INSTR:
INSTR(被检索参数,需要检索参数,指定比较类型)
其中,指定比较类型是可省略的,INSTR('早中晚夜加',LEFT(餐段,1))的意思是,取餐段字段下得项的第一个字符串,检索其在【'早中晚夜加'】这个文本字符串中得位置。
CHOOSE:
CHOOSE(数值,数值为1时返回值,数值为2时返回值,……,数值X时返回值)
CHOOSE从1开始执行,和SWITCH一样,会计算所有列出的表达式,如果任意一个表达式出错,CHOOSE也会出错,不执行。
如果数值小于1或大于所列出的列数,则返回NULL。
SWITCH、INSTR和CHOOSE均可在ACCESS帮助中找到。
数据源:
要求和效果
最终效果如下图动画:
该贴已经同步到 wuxiang_123的微博
|
评分
-
1
查看全部评分
-
|