2017-03-13 78 views
1
SqlCommand cmd = new SqlCommand(@" 
    SELECT 
     dbo.tblDepartment.Prefix, 
     dbo.tblQueue.QueueNumber, 
     dbo.tblEmployees.EmpName 
    FROM dbo.tblDepartment 
    INNER JOIN dbo.tblEmployees ON dbo.tblDepartment.EmpID= dbo.tblEmployees.EmpID 
    INNER JOIN dbo.tblQueue ON dbo.tblDepartment.DeptID = dbo.tblQueue.DeptID 
    WHERE tblDepartment.DeptID = 1 
    and tblQueue.QueueNumber in (SELECT 
            MIN(QueueNumber) 
           FROM tblQueue 
           WHERE tblQueue.QueueStatus = 'Pending')", con); 

HI我有一個查詢獲取列狀態等於「待定」的最小值。但每次我將其狀態更改爲「完成」時,都會獲得狀態爲「完成」而非等待狀態的最小值。獲取最小值

+0

什麼是與此查詢的問題? – Murad

+0

我有一個列QueueNumber和一個列QueueStatus,所以我想要從QueueStatus列中得到狀態爲「Pending」的QueueNumber列中的最小值,但是每次將列QueueStatus的狀態更改爲「完成」時......它沒有得到狀態爲「待定」的下一個最小值,所以問題是,它獲得狀態「完成」而不是狀態「待定」的最小值。 – Ekko

+0

@Ekko:如果您在where子句中傳遞「Done」,它只會返回與Done狀態相關的數據 –

回答

0

顯然你的問題不在代碼中,它可能是數據庫的混合或類似的東西。

編輯:但是代碼確實有一個問題:你需要指定內部查詢裏面的DEPTID爲好,像這樣(here is a demo):

SELECT 
    dbo.tblDepartment.Prefix, 
    dbo.tblQueue.QueueNumber 
    FROM dbo.tblDepartment 
    INNER JOIN dbo.tblQueue ON dbo.tblDepartment.DeptID = dbo.tblQueue.DeptID 
    WHERE tblDepartment.DeptID = 2 
    and tblQueue.QueueNumber in 
    (
     SELECT MIN(QueueNumber) 
     FROM tblQueue 
     WHERE tblQueue.DeptID = 2 
      and tblQueue.QueueStatus = 'Pending' 
    ) 
+0

謝謝你的工作。 – Ekko

+0

那麼有什麼不對? –

+0

當你說它只是混合起來...我只是改變了表內的值,所以它的工作......但我的下一個問題是......當我將WHERE Claus中的DeptID更改爲2時,它不是檢索任何值 – Ekko