2010-03-10 27 views
1

我需要這樣做:凡在where子句中 - 第2版:-)

有一個名爲table1的它表有一個員工id列,狀態列具有值1和只有0和部門之柱值100,101,102。

我想列出與狀態的所有僱員= 0

從上面的列表我要篩選其中具有僱員(其狀態部門= 100和= 1)

擴展問題:

我想只包括其部門100,距離狀態= 0員工列表狀態= 1

請幫我

+3

我想你應該顯示一些樣本數據和預期結果。 – 2010-03-10 17:50:12

+2

第一個列表過濾所有狀態= 0,再次過濾到狀態= 1將在所有情況下產生0結果,澄清一點? – 2010-03-10 17:50:46

+0

如果列表的狀態爲0,那麼status = 1的過濾器將不起作用。 你還試過了什麼,結果有什麼問題 – Mark 2010-03-10 17:50:48

回答

0

我猜你已經正確的話來說,想OR代替AND,試試這個..

select * 
    from table1 
where (status=0) or (status=1 and department=100) 

編輯

如果你只是想那麼僱員這樣做

select employeeid 
    from table1 
    where (status=0) or (status=1 and department=100) 

編號2

涵蓋所有的基礎,如果你想找到所有的員工誰沒有0的狀態,或狀態1和100的部門然後試試這個!

select employeeid 
    from table1 
    where not (status=0) and not (status=1 and department=100) 
0

這沒有道理......你要篩選其狀態爲0 一旦你已篩選這些記錄要重新過濾該原始濾波器包括有100部所有員工的所有員工(其中仍然可以),但是然後你想要的狀態是1.怎麼能給你說你在原來的要求,你只是想僱員0狀態???

想一想,並從試圖回答您的問題的人那裏拿出來。 您有10條記錄,其中一半有員工0狀態,另一半有1狀態。

Jon1 1 
Jon2 1 
Jon3 1 
Jon4 1 
Jon5 1 

JOn6 0 
Jon7 0 
Jon8 0 
Jon9 0 
Jon10 0 

所以,你希望所有員工以0:

JOn6 0 
Jon7 0 
Jon8 0 
Jon9 0 
Jon10 0 

簡單:SELECT blah FROM Employees WHERE Status=0

現在,你想擁有的100他們的部門數量與另一查詢,但有1狀態好如何篩選狀態爲0的狀態爲1的狀態?

你可能想OR條件:

SELECT blah FROM myTable WHERE EmpStatus=0 OR (EmpStatus=1 AND Dept=100) 

這顯然是一個不同的問題...

1

我猜你忽略了這個問題語句的重要組成部分:每個employeeid可以在table1中多次。我假設你想用一個記錄員工狀態指示燈的0和指示部門100 /狀態1.

如果是的話,試試這個第二個記錄:

SELECT * FROM Table1 AS E0 
    INNER JOIN Table1 AS D100 
    ON E0.EmployeeID = D100.EmployeeID 
    WHERE E0.Status = 0 AND D100.Department = 100 AND D100.Status = 1 

如果我正確理解你的問題,這應該接近你想要的。

+0

+1在盒子外面思考我被困在:-) – CResults 2010-03-10 18:14:39

0

如果你有多個具有相同EmployeeID的行(這裏只是猜測),那麼你可能想要嘗試下面的查詢。

Select EmployeeId 
From Table1 
Group By EmployeeId 
Having Count(Case When Status = 0 Then 1 End) > 0 
     And Count(Case When Status = 1 And Department = 100 Then 1 End) > 0 
0

可能是這樣的,如果我正確地理解你。

SELECT * 
    FROM emp_dept e1 
WHERE status = 0 
    AND EXISTS(SELECT * 
       FROM emp_dept e2 
       WHERE e2.id  = e1.id 
        AND e2.status = 1 
        AND e2.dept = 100)