我是 SQL 编码的新手,我正在努力寻找解决问题的方法。
我有一个数据库,其中包含在我们组织中断断续续地工作过的承包商。
该数据库包含承包商的就业编号及其当前/过去的合同。
我需要检查承包商有多行的位置,如果有一个contractor_code = '24',还要检查是否有一个contractor_code = '60'。如果为真,则选择contractor_code = '60 行和数据,并给CASE 多行计数'1'。
样本数据:
SQL 代码:
SELECT DISTINCT
contractor_no,
CASE WHEN contractor_code = '24' AND contractor_code = '60'
THEN 1
END AS multiple_roles
FROM contractor_header ch
LEFT JOIN service_history sh ON sh.contractor_no = ch.contractor_no
ORDER BY multiple_roles DESC
该表将所有contractor_no 的multiple_roles 值设为NULL。
我无法根据它们是活动的还是完成的来消除这些行,因为即使他们已经完成,我也想计算一个承包商。有些列在 date_commenced 或 date_finished 中没有数据。
任何建议都会很棒,即使我的案例声明偏离了轨道。
contractor_code
如果除了 24 和 60 之外没有其他值,则如果存在
contractor_code
除 24 和 60 之外的其他值,则