从SQL

时间:2016-03-11 09:27:05

标签: sql sql-server-2008

我有一个查询,它为我提供了Comp_mkey = 7 and 110的数据。查询如下

SELECT DISTINCT m.comp_mkey,
            c.company_name,
            m.start_date,
            m.End_date,
            m.Process_date,
            m.Months_days,
            m.Process_year,
            m.Process_Month FROM emp_mst e,
            company_mst c,
            P_Monthly_Must_Para_Hdr m WHERE c.mkey = e.comp_mkey
            AND m.comp_mkey = e.comp_mkey
            AND (m.process_date IS NOT NULL
            AND (convert(varchar,(getDate()),103)) = convert(varchar,m.process_date + 1, 103))
            AND m.Process_year = 2016
            AND Process_month = 2

查询的输出如下: -

Table output

现在我想要的是,

  

comp_mkey位于 7,110

的所有员工姓名

请告诉我如何获得

我正在使用SQL-server 2008

1 个答案:

答案 0 :(得分:2)

仅供名称

SELECT DISTINCT e.Emp_name
FROM emp_mst e
WHERE e.comp_mkey IN ('7', '110')

就像你说的那样使用IN

SELECT DISTINCT m.comp_mkey, c.company_name, m.start_date, m.End_date, m.Process_date, m.Months_days, m.Process_year, m.Process_Month 
FROM emp_mst e, company_mst c, P_Monthly_Must_Para_Hdr m 
WHERE c.mkey = e.comp_mkey
AND m.comp_mkey = e.comp_mkey
AND (m.process_date IS NOT NULL
AND (convert(varchar,(getDate()),103)) = convert(varchar,m.process_date + 1, 103))
AND m.Process_year = 2016
AND Process_month = 2
AND m.comp_mkey IN ('7', '110')

此外,你应该使用这样的显式连接。

SELECT DISTINCT m.comp_mkey, c.company_name, m.start_date, m.End_date, m.Process_date, m.Months_days, m.Process_year, m.Process_Month 
FROM emp_mst e
INNER JOIN company_mst c ON c.mkey = e.comp_mkey
INNER JOIN P_Monthly_Must_Para_Hdr m ON m.comp_mkey = e.comp_mkey
WHERE (m.process_date IS NOT NULL
AND (convert(varchar,(getDate()),103)) = convert(varchar,m.process_date + 1, 103))
AND m.Process_year = 2016
AND Process_month = 2
AND m.comp_mkey IN ('7', '110')