2015-09-12 25 views
0

我想寫查詢,顯示記錄對最大ID現在我也想記錄,如果它不符合MAX ID如何獲得最大的id別人的基礎記錄顯示0計數

這是什麼我迄今所做..

到目前爲止,即時通訊能夠得到對MAX ID記錄在Laptop_ShiftDepartment,但我也需要 計數如果0計數部門

SELECT 
 
\t D.Department as Depart, 
 
\t 
 
\t COUNT(LD.ID) AS TotalLaptops 
 
\t \t \t \t FROM 
 
\t \t \t \t Laptop_Departments D 
 
\t \t \t \t left JOIN Laptop_Shift_Departments S 
 
\t \t \t \t ON D.ID = S.Current_Dep_ID 
 
\t \t \t \t left JOIN PO_LAPTOPDETAIL LD 
 
\t \t \t \t ON S.Laptop_Detail_ID = LD.ID 
 
\t \t \t 
 
\t \t \t \t left JOIN PO_Laptop_Master LM 
 
\t \t \t \t ON LM.ID = LD.Laptop_Master_ID 
 
\t \t \t \t left JOIN PO_PURCHASEORDER PO 
 
\t \t \t \t ON PO.ID = LM.PO_ID 
 

 
\t \t \t \t \t left JOIN Laptop_Departments cD 
 
\t \t \t \t ON cD.ID = ld.Dept_id 
 
WHERE S.id in (select MAX(cSD.id) from Laptop_Shift_Departments cSD GROUP BY cSD.Laptop_Detail_ID) 
 
\t \t \t \t \t group by \t D.Department ,D.ID

回答

0

可以使用SQL 「CASE語句」 像下面

SELECT D.Department as Depart, 
CASE 
    when S.id in (select MAX(cSD.id) 
        from Laptop_Shift_Departments cSD 
        GROUP BY cSD.Laptop_Detail_ID) 
    then count(LD.ID) 
ELSE 0 
END AS TotalLaptops 
FROM Laptop_Departments D 
left JOIN Laptop_Shift_Departments S ON D.ID = S.Current_Dep_ID 
left JOIN PO_LAPTOPDETAIL LD ON S.Laptop_Detail_ID = LD.ID 
left JOIN PO_Laptop_Master LM ON LM.ID = LD.Laptop_Master_ID 
left JOIN PO_PURCHASEORDER PO ON PO.ID = LM.PO_ID 
left JOIN Laptop_Departments cD ON cD.ID = ld.Dept_id 
group by D.Department ,D.ID 
+0

這是完全一樣'COUNT(*)' :-) – dnoeth

+0

更新了我的答案,它不是最佳解決方案,但它會按預期給出答案 – Shakti

0

移動where子句的from條款的使用left join

SELECT D.Department as Depart, COUNT(LD.ID) AS TotalLaptops 
FROM Laptop_Departments D left join 
    Laptop_Shift_Departments S 
    ON D.ID = S.Current_Dep_ID left join 
    PO_LAPTOPDETAIL LD 
    ON S.Laptop_Detail_ID = LD.ID left join 
    PO_Laptop_Master LM 
    ON LM.ID = LD.Laptop_Master_ID left join 
    PO_PURCHASEORDER PO 
    ON PO.ID = LM.PO_ID left join 
    Laptop_Departments cD 
    ON cD.ID = ld.Dept_id left join 
    (select MAX(cSD.id) as maxid 
     from Laptop_Shift_Departments cSD 
     GROUP BY cSD.Laptop_Detail_ID 
    ) m 
    ON m.maxid = s.id 
group by D.Department, D.ID 
相關問題