我有这样的查询:过滤器的SQL查询的SQL Server
SELECT
tbl.EmpID,
CASE
WHEN emp.status = 'terminated' THEN CONVERT(bit, 1)
ELSE CONVERT(bit, 0)
END AS 'Status',
CASE
WHEN tbl.LeaveTypeId = 'a' THEN CONVERT(bit, 1)
ELSE CONVERT(bit, 0)
END AS 'Absent',
CASE
WHEN (tbl.outime IS NULL) AND
(tbl.LeaveTypeId <> 'a' and tbl.LeaveTypeId Is null) THEN CONVERT(bit, 1)
ELSE CONVERT(bit, 0)
END AS 'InOut',
emp.EmpFullName,
tbl.P_Date,
cmp.cmplogo,
emp.nation_id,
emp.dept_id,
emp.desig_id AS 'designation_id',
emp.tradecd,
emp.comp_id,
emp.section_id,
emp.location_id,
emp.emplcatgry
FROM tblattendance tbl
INNER JOIN EMPLOYEEs emp
ON emp.empid = tbl.empid
INNER JOIN Company cmp
ON cmp.comp_id = emp.comp_id
WHERE CONVERT(varchar(10), tbl.p_date, 112) BETWEEN '20160901' AND '20160902'
我出来就把未来类似这样的
empid status absent inout
121 1 1 1
122 0 0 0
但只有我想用状态造成的,不存在,inout大于0,所以我怎么写条件。
不知道是什么用意,但这样的:'(tbl.LeaveTypeId <> 'a' 和tbl.LeaveTypeId为空)'没有任何意义,因为如果它是NULL,它永远不能与chars比较。应该是OR而不是AND? – Beth