Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS Access SQL查询中的If-Else梯形图_Sql_If Statement_Ms Access 2010 - Fatal编程技术网

MS Access SQL查询中的If-Else梯形图

MS Access SQL查询中的If-Else梯形图,sql,if-statement,ms-access-2010,Sql,If Statement,Ms Access 2010,如何使用记录集在MS Access SQL查询中编写If-else梯形图,而不是在代码中编写 我有这样的条件: SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' AND SpecialistCode = 'C4535421' AND WeekNum = 1 它将给出任何值,如果没有,我想运行此查询: SELECT min(ThresholdValue) FROM tbl_Threshold W

如何使用记录集在MS Access SQL查询中编写If-else梯形图,而不是在代码中编写

我有这样的条件:

SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND SpecialistCode = 'C4535421' AND WeekNum = 1
它将给出任何值,如果没有,我想运行此查询:

SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND SpecialistCode = 'C4535421' AND (WeekNum is Null or WeekNum = '')
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = '') 
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null 
or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null 
or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='')      
AND (WeekNum is Null or WeekNum = '') 
它将给出任何值,如果没有,我想运行此查询:

SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND SpecialistCode = 'C4535421' AND (WeekNum is Null or WeekNum = '')
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = '') 
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null 
or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null 
or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='')      
AND (WeekNum is Null or WeekNum = '') 
它将给出任何值,如果没有,我想运行此查询:

SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND SpecialistCode = 'C4535421' AND (WeekNum is Null or WeekNum = '')
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = '') 
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null 
or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null 
or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='')      
AND (WeekNum is Null or WeekNum = '') 
它将给出任何值,如果没有,我想运行此查询:

SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND SpecialistCode = 'C4535421' AND (WeekNum is Null or WeekNum = '')
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = '') 
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null 
or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null 
or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='')      
AND (WeekNum is Null or WeekNum = '') 
它将给出任何值,如果没有,我想运行此查询:

SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND SpecialistCode = 'C4535421' AND (WeekNum is Null or WeekNum = '')
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' 
AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = '') 
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null 
or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null 
or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='')      
AND (WeekNum is Null or WeekNum = '') 

基本上,我在查询中给出了3个条件,如果没有找到该条件的记录,那么我将逐步用空值或null替换条件。目前,我正在使用记录集进行此操作,这意味着检查记录集的计数,若为0,则使用下一个条件填充记录集,依此类推。但是这种方法花费了太多的时间,因为它本身是在一个超过100条记录的循环中完成的。因此,我可以用任何其他方法来实现这一点,可能是在一个查询中?

考虑一个嵌套的IIF语句。请注意条件的反向层次结构:

SELECT min(IIF((SpecialityCode is null or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = ''), 
ThreshodValue,
IIF((SpecialityCode is null or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum = 1),
ThresholdValue,
IIF(SpecialityCode = '130' AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = ''),
ThresholdValue,
IIF(SpecialityCode = '130' AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1, 
ThresholdValue,
IIF(SpecialityCode = '130' AND SpecialistCode = 'C4535421' AND (WeekNum is Null or WeekNum = ''), 
ThresholdValue,
IIF(SpecialityCode = '130' AND SpecialistCode = 'C4535421' AND WeekNum = 1, 
ThresholdValue, 0)))))))
FROM tbl_threshold;

可选地,您可以考虑一个联合查询,其中如果不包含任何值的SELECT语句,则UNION(VS UNIONALL)将防止重复。但您可能希望在联合查询中返回ID和阈值,并在另一个查询中使用min()聚合联合查询

SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' AND SpecialistCode = 'C4535421' AND WeekNum = 1
UNION
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' AND SpecialistCode = 'C4535421' AND (WeekNum is Null or WeekNum = '')
UNION
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
UNION
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = '')
UNION
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
UNION
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = '');

考虑一个嵌套的IIF语句。请注意条件的反向层次结构:

SELECT min(IIF((SpecialityCode is null or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = ''), 
ThreshodValue,
IIF((SpecialityCode is null or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum = 1),
ThresholdValue,
IIF(SpecialityCode = '130' AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = ''),
ThresholdValue,
IIF(SpecialityCode = '130' AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1, 
ThresholdValue,
IIF(SpecialityCode = '130' AND SpecialistCode = 'C4535421' AND (WeekNum is Null or WeekNum = ''), 
ThresholdValue,
IIF(SpecialityCode = '130' AND SpecialistCode = 'C4535421' AND WeekNum = 1, 
ThresholdValue, 0)))))))
FROM tbl_threshold;

可选地,您可以考虑一个联合查询,其中如果不包含任何值的SELECT语句,则UNION(VS UNIONALL)将防止重复。但您可能希望在联合查询中返回ID和阈值,并在另一个查询中使用min()聚合联合查询

SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' AND SpecialistCode = 'C4535421' AND WeekNum = 1
UNION
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' AND SpecialistCode = 'C4535421' AND (WeekNum is Null or WeekNum = '')
UNION
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
UNION
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE SpecialityCode = '130' AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = '')
UNION
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND WeekNum = 1
UNION
SELECT min(ThresholdValue) FROM tbl_Threshold WHERE (SpecialityCode is null or SpecialityCode ='') AND (SpecialistCode is null or SpecialistCode ='') AND (WeekNum is Null or WeekNum = '');

你能用外行的话解释一下你想做什么吗?必须有另一种方法来做到这一点,不同于多次测试多个条件。@PaulFrancis我已经在我的线程底部用简单的语言解释了它。首先,我检查表中是否有包含所有3个条件的行,如果没有,那么我一次忽略第三个条件,然后根据其余2个条件进行检查,如果也没有找到数据,那么我忽略第二个条件,只检查第一个条件。因为这三列中可能都有值的数据。为了提供另一种选择,我认为我们首先需要知道这种方法的目的。你能用外行的术语解释一下你想做什么吗?必须有另一种方法来做到这一点,不同于多次测试多个条件。@PaulFrancis我已经在我的线程底部用简单的语言解释了它。首先,我检查表中是否有包含所有3个条件的行,如果没有,那么我一次忽略第三个条件,然后根据其余2个条件进行检查,如果也没有找到数据,那么我忽略第二个条件,只检查第一个条件。因为这三列中可能都有值的数据。为了提供另一种选择,我认为我们首先需要知道这种方法的目的。你能用外行的术语解释一下你想做什么吗?必须有另一种方法来做到这一点,不同于多次测试多个条件。@PaulFrancis我已经在我的线程底部用简单的语言解释了它。首先,我检查表中是否有包含所有3个条件的行,如果没有,那么我一次忽略第三个条件,然后根据其余2个条件进行检查,如果也没有找到数据,那么我忽略第二个条件,只检查第一个条件。因为可能有数据在这三列中都有值,或者没有。为了提供一个替代方案,我认为我们首先需要知道这种方法的目的。