Bonjour,

Je suis en train de réfléchir sur une requête TSQL.

Mon objectif est de renvoyé la date en fonction de l'étape à laquelle est un bon pour une liste de bon, sachant que pour chaque étape il y a une date associé de lancement de cette étape et qu'il s'agit d'un champs dans la table.

voici la structure de la table :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
CREATE TABLE [dbo].[DEV_BON_PEINTURE](
	[id_bon_peinture] [int] IDENTITY(1,1) NOT NULL,
	[id_fournisseur] [int] NULL,
	[id_donnee] [int] NULL CONSTRAINT [DF_DEV_BON_PEINTURE_id_donnee]  DEFAULT (NULL),
	[id_type_bon] [int] NULL,
	[id_etape] [int] NULL,
	[nom_bon_peinture] [varchar](50) COLLATE French_CI_AS NULL,
	[date_DEMANDEUR] [datetime] NULL,
	[codeR3] [varchar](200) COLLATE French_CI_AS NULL,
	[nombre] [int] NULL,
	[nombre_pieces_urgentes] [int] NULL,
	[numBB] [varchar](20) COLLATE French_CI_AS NULL,
	[teinte] [varchar](200) COLLATE French_CI_AS NULL,
	[reference] [varchar](200) COLLATE French_CI_AS NULL,
	[delais] [varchar](200) COLLATE French_CI_AS NULL,
	[designation_complete] [varchar](200) COLLATE French_CI_AS NULL,
	[observation_demandeur] [varchar](5000) COLLATE French_CI_AS NULL,
	[tache] [int] NULL,
	[precision_TACHE] [varchar](200) COLLATE French_CI_AS NULL,
	[date_controle_peinture] [datetime] NULL,
	[codeR3_controle_peinture] [varchar](200) COLLATE French_CI_AS NULL,
	[controle_peinture] [int] NULL,
	[observation_controle_peinture] [varchar](5000) COLLATE French_CI_AS NULL,
	[date_controle_magasin] [datetime] NULL,
	[codeR3_controle_magasin] [varchar](200) COLLATE French_CI_AS NULL,
	[controle_magasin] [int] NULL,
	[stock_magasin] [int] NULL CONSTRAINT [DF_DEV_BON_PEINTURE_stock_magasin]  DEFAULT ((0)),
	[observation_controle_magasin] [varchar](5000) COLLATE French_CI_AS NULL,
	[controle_destinataire_prod] [int] NULL CONSTRAINT [DF_DEV_BON_PEINTURE_controle_destinataire_prod]  DEFAULT ((0)),
	[date_destinataire_prod] [datetime] NULL,
	[codeR3_destinataire_prod] [varchar](200) COLLATE French_CI_AS NULL,
	[observation_destinataire_prod] [varchar](5000) COLLATE French_CI_AS NULL,
	[date_peinture] [datetime] NULL,
	[codeR3_partie_peinture] [varchar](200) COLLATE French_CI_AS NULL,
	[delais_previsionnel_peinture] [varchar](200) COLLATE French_CI_AS NULL,
	[observation_peinture] [varchar](5000) COLLATE French_CI_AS NULL,
	[temps_passe] [varchar](200) COLLATE French_CI_AS NULL,
	[date_destinataire] [datetime] NULL,
	[codeR3_destinataire] [varchar](200) COLLATE French_CI_AS NULL,
	[observation_destinataire] [varchar](5000) COLLATE French_CI_AS NULL,
	[id_DEMANDEUR] [varchar](50) COLLATE French_CI_AS NULL,
	[id_CONTROLE_PEINTURE] [varchar](50) COLLATE French_CI_AS NULL,
	[id_CONTROLE_MAGASIN] [varchar](50) COLLATE French_CI_AS NULL,
	[id_DESTINATAIRE_PROD] [varchar](50) COLLATE French_CI_AS NULL,
	[id_PEINTURE] [varchar](50) COLLATE French_CI_AS NULL,
	[id_DESTINATAIRE] [varchar](50) COLLATE French_CI_AS NULL,
 
en pseudo code cette requête donnerai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Select 
        Nom_bon_peinture,
        id_etape,
        Si id_etape=1 then selectionne la valeur date_demandeur du bon
        Sinon si id_etape IN (8,7) then selectionne la valeur date_controle_peinture du bon
        Sinon si id_etape=3 then selectionne la valeur date_peinture du bon
        Sinon si id_etape=4 then selectionne la valeur date_destinataire du bon
        Sinon si id_etape IN (5,11) then selectionne la valeur date_controle_magasin du bon
J'ai fait une recherche sur le CASE en transact-SQL :
http://technet.microsoft.com/fr-fr/l...5(SQL.90).aspx

Cependant je ne sais pas si c utilisable dans mon cas de figure.

Je ne sais pas si ma question est claire.

Merci d'avance pour votre aide