Bonjour à tous,

J'ai fais un petit programme qui effectue des requetes SQL sur une base de données SQL server 2000.

Tout fonctionne bien pour les requete de base.
Le soucis vient quand je veux integrer un COUNT.

Voici ma requête qui fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
maRequeteNG = "SELECT *" +
                          "FROM dbo.TECommandsAll with (NOLOCK)" +
                          "INNER JOIN dbo.ProcessData with (NOLOCK)" +
                          "ON ((CASE WHEN PDData01 LIKE '_;[0-9][0-9][0-9][0-9][0-9]%' THEN SUBSTRING(PDData01,3,5) ELSE SUBSTRING(PDData01,1,5) END)=dbo.TECommandsAll.Code)" +
                          "INNER JOIN dbo.ProcessPassgeNavi with (NOLOCK)" +
                          "ON (PPPCBSerialNumber=PDPCBSerialNumber and PPProcessNumber=PDProcessNumber and PDTimeStamp=PPTimeStamp)" +
                          "WHERE " +
                          "PPProcessNumber=@localprocess " +
                          "AND PPPostID = @localhost " +
                          "AND PPQCStatus = 1 " +
                          "AND PPPassageNumber = 1 " +
                          "AND PPPCBSerialNumber like @PCBSerialNumber " +
                          "AND PPTimeStamp >= @dateToStart and PPTimeStamp <= @dateToStop ";
ensuite celle ou je veux intégrer le COUNT et qui ne marche pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
maRequeteNG = "SELECT COUNT(CASE WHEN PDData01 like '_;[0-9][0-9][0-9][0-9][0-9]%' THEN SUBSTRING(PDData01,3,5) ELSE SUBSTRING(PDData01,1,5) END) AS NombreErrCode, " +
                         "FROM dbo.TECommandsAll with (NOLOCK) " +
                         "INNER JOIN dbo.ProcessData with (NOLOCK) " +
                         "ON ((CASE WHEN PDData01 LIKE '_;[0-9][0-9][0-9][0-9][0-9]%' THEN SUBSTRING(PDData01,3,5) ELSE SUBSTRING(PDData01,1,5) END)=dbo.TECommandsAll.Code) " +
                         "INNER JOIN dbo.ProcessPassgeNavi with (NOLOCK) " +
                         "ON (PPPCBSerialNumber=PDPCBSerialNumber and PPProcessNumber=PDProcessNumber and PDTimeStamp=PPTimeStamp) " +
                         "WHERE " +
                         "PPProcessNumber= @localprocess " +
                         "AND PPPostID = @localhost " +
                         "AND PPQCStatus = 1 " +
                         "AND PPPassageNumber = 1 " +
                         "AND PPPCBSerialNumber like @PCBSerialNumber " +
                         "AND PPTimeStamp >= @dateToStart and PPTimeStamp <= @dateToStop " +
                         "GROUP BY (CASE WHEN PDData01 like '_;[0-9][0-9][0-9][0-9][0-9]%' THEN SUBSTRING(PDData01,3,5) ELSE SUBSTRING(PDData01,1,5) END) ";
Ma requete fonctionne sur SQL server management studio...

Merci de votre aide