tbl_LoanSummary
有Sample_Number
列。我必须检查Sample_Number
列是否为空,返回'Y',否则从select语句下面返回'N'。
select a.Br_Loan_No ,a.Br_LookupKey, //return IsNull(s.Sample_Number) ='N' or 'Y'
from dbo.tbl_Br a left outer join dbo.tbl_LoanSummary s
on s.Loan_no = a.Br_Loan_No order by a.Br_Loan_No
怎么做?
答案 0 :(得分:3)
您可以使用case
表达式...
select a.Br_Loan_No,
a.Br_LookupKey,
CASE WHEN s.Sample_Number IS NULL THEN 'N' ELSE 'Y' END AS [HasSample]
from dbo.tbl_Br a left outer join dbo.tbl_LoanSummary s
on s.Loan_no = a.Br_Loan_No order by a.Br_Loan_No
答案 1 :(得分:0)
您需要使用CASE
表达式。它就像是来自传统编程语言的嵌入式if语句或switch语句。
SELECT a.Br_Loan_No,
a.Br_LookupKey
CASE
WHEN s.Sample_Number IS NULL THEN 'N'
ELSE 'Y'
END AS sample_number_is_not_null
FROM dbo.tbl_Br a
LEFT JOIN dbo.tbl_LoanSummary s
ON s.Loan_no = a.Br_Loan_No
ORDER BY a.Br_Loan_no
请注意,您在此处创建计算列,而不是选择现有列的原始值。通常要求您为此列命名,从而使用AS sample_number_is_not_null
。
CASE
表达式有两种形式。一个允许您将列或值与多个选项进行比较。这就像使用隐式等号:
CASE foo
WHEN 3 THEN 'foo is 3!'
WHEN 4 THEN 'foo is 4!'
ELSE 'foo is not 3 or 4'
END
另一种形式,在顶部的示例中,允许您在每个WHEN
子句中使用任意表达式。应该注意的是,每个WHEN
子句按顺序进行评估,第一个要匹配的子句是THEN
用作结果的子句。如果WHEN
s都不匹配,则使用ELSE
中的结果。
答案 2 :(得分:0)
在Oracle中,您也可以使用
select NVL(s.Sample_Number, 'N')
在空值
的情况下返回N.(当然,如果不为空,你还需要有东西。)