2017-03-09 19 views

答えて

1

を試してみてください。それはCASE式はSUM()への引数であることを意味します - それは「外」ではない「内側」行く:

SELECT Designation_projet, COUNT(*) AS [Nb Demande], 
     SUM(CASE WHEN Validation = 0 THEN 1 ELSE 0 END) as Validée, 
     SUM(CASE WHEN Validation = 1 THEN 1 ELSE 0 END) as NonValidée, 
     SUM(CASE WHEN Commandé = 0 THEN 1 ELSE 0 END) AS NonCommandé, 
     SUM(CASE WHEN Commandé <> 0 THEN 1 ELSE 0 END) END AS Commandé, 
     SUM(TotalHT) AS TotalHT 
FROM V_DemandeAchat 
GROUP BY Designation_projet; 

あなたはDesignation_projetごとに1つの行をしたい場合は、それがGROUP BYで唯一の鍵でなければなりません。

Validationと仮定すると、あなたは、最初の2つの集約式を簡素化することができ、唯一の2つの値をとる上:

SELECT Designation_projet, COUNT(*) AS [Nb Demande], 
     SUM(1 - Validation) as Validée, 
     SUM(Validation = 1) as NonValidée, 
     SUM(CASE WHEN Commandé = 0 THEN 1 ELSE 0 END) AS NonCommandé, 
     SUM(CASE WHEN Commandé <> 0 THEN 1 ELSE 0 END) END AS Commandé, 
     SUM(TotalHT) AS TotalHT 
FROM V_DemandeAchat 
GROUP BY Designation_projet; 

はあなたにもCommandé式を簡素化することができるかもしれません。

+0

ありがとうございます –

1

のおかげであなたは、この使用条件の集約を行うことができ、この

SELECT  Designation_projet, COUNT(*) AS [Nb Demande],sum(CASE WHEN Validation = 1 THEN 1 else 0 END AS Validée,sum(CASE WHEN Validation = 1 THEN 1 else 0 
     END AS NonValidée, sum(CASE WHEN NonCommandé <> 1 THEN 1 else 0 END AS NonCommandé, 
     sum(CASE WHEN Commandé <> 1 THEN 1 else 0 END AS Commandé, SUM(TotalHT) AS TotalHT 
FROM   V_DemandeAchat 
GROUP BY Designation_projet 
+0

私はDesignation_projetのグループでこの場合2行にする必要があります。クエリには4行を指定します –

関連する問題