Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Sylvain Lafontaine
Utilisez un Case:
Case When SumOfKm > 20000 Then 25000 + (SumOfKm - 20000) * 0.5 When SumOfKm > 5000 Then 10000 + (SumOfKm - 5000) Else SumOfKm * 2 End as FraisKilometrage
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC
"jeorme" wrote in message news:uDvc$
Bonjour à tous.
J'ai une appli pour la saisie de note de frais. J'ai une table dans laquelle est stocké le nom de la personne et ses KM parcouru dans l'année.
Quand l'employé saisie une note il rentre son nombre de KM parcouru pour cette note.
Par ex:
TABLE_CUMUL: nom KM_annuel MARTIN 4988
NOTE
nom DATE KM_parcouru MARTIN 12/05/05 152
Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année:
TAUX: classe nb_max taux A 5000 2 B 20000 1 C 999999 0.5
Donc je voudrais un reqte SQL qui me donne:
NOM TRANCHE TAUX NB_KM MARTIN A 2 12 MARTIN B 1 140
c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 = 12 qui vont en tranche A et ensuite 152-12 = 140 qui eu sont en tranche B
Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la tranche C.
Je ne vois pas comment faire ça en SQL.
Merci d'avance.
Utilisez un Case:
Case When SumOfKm > 20000 Then 25000 + (SumOfKm - 20000) * 0.5 When
SumOfKm > 5000 Then 10000 + (SumOfKm - 5000) Else SumOfKm * 2 End as
FraisKilometrage
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
"jeorme" <jerome.boutin@filtrauto.com> wrote in message
news:uDvc$G7WFHA.3584@TK2MSFTNGP14.phx.gbl...
Bonjour à tous.
J'ai une appli pour la saisie de note de frais. J'ai une table dans
laquelle
est stocké le nom de la personne et ses KM parcouru dans l'année.
Quand l'employé saisie une note il rentre son nombre de KM parcouru pour
cette note.
Par ex:
TABLE_CUMUL:
nom KM_annuel
MARTIN 4988
NOTE
nom DATE KM_parcouru
MARTIN 12/05/05 152
Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année:
TAUX:
classe nb_max taux
A 5000 2
B 20000 1
C 999999 0.5
Donc je voudrais un reqte SQL qui me donne:
NOM TRANCHE TAUX NB_KM
MARTIN A 2 12
MARTIN B 1 140
c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 =
12
qui vont en tranche A
et ensuite 152-12 = 140 qui eu sont en tranche B
Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la
tranche C.
Case When SumOfKm > 20000 Then 25000 + (SumOfKm - 20000) * 0.5 When SumOfKm > 5000 Then 10000 + (SumOfKm - 5000) Else SumOfKm * 2 End as FraisKilometrage
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC
"jeorme" wrote in message news:uDvc$
Bonjour à tous.
J'ai une appli pour la saisie de note de frais. J'ai une table dans laquelle est stocké le nom de la personne et ses KM parcouru dans l'année.
Quand l'employé saisie une note il rentre son nombre de KM parcouru pour cette note.
Par ex:
TABLE_CUMUL: nom KM_annuel MARTIN 4988
NOTE
nom DATE KM_parcouru MARTIN 12/05/05 152
Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année:
TAUX: classe nb_max taux A 5000 2 B 20000 1 C 999999 0.5
Donc je voudrais un reqte SQL qui me donne:
NOM TRANCHE TAUX NB_KM MARTIN A 2 12 MARTIN B 1 140
c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 = 12 qui vont en tranche A et ensuite 152-12 = 140 qui eu sont en tranche B
Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la tranche C.
Je ne vois pas comment faire ça en SQL.
Merci d'avance.
Sylvain Lafontaine
Oubliez ma réponse précédente, je n'avais pas lu que vous vouliez ventiler le résultat final en plusieurs records.
Pour créer votre nombre variable d'enregistrement par personne, utilisez une table temporaire pour stocker vos résultats à l'aide d'une procédure stockée ou sinon faites un join cartésien sur une table supplémentaire comportant 3 lignes (peut importe les valeurs de ces 3 lignes) et ajouter une clause Where pour valider l'ajout de chacune de ces trois lignes.
Vous pouvez également deux UNIONS sur trois requêtes SQL mais j'aime moins ça.
Finalement, je ne comprends pas votre exemple de calcul pour avoir 12 et 140 Km en valeurs finales si votre usager a parcouru un minimum de 4988 Km durant l'année.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC
"jeorme" wrote in message news:uDvc$
Bonjour à tous.
J'ai une appli pour la saisie de note de frais. J'ai une table dans laquelle est stocké le nom de la personne et ses KM parcouru dans l'année.
Quand l'employé saisie une note il rentre son nombre de KM parcouru pour cette note.
Par ex:
TABLE_CUMUL: nom KM_annuel MARTIN 4988
NOTE
nom DATE KM_parcouru MARTIN 12/05/05 152
Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année:
TAUX: classe nb_max taux A 5000 2 B 20000 1 C 999999 0.5
Donc je voudrais un reqte SQL qui me donne:
NOM TRANCHE TAUX NB_KM MARTIN A 2 12 MARTIN B 1 140
c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 = 12 qui vont en tranche A et ensuite 152-12 = 140 qui eu sont en tranche B
Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la tranche C.
Je ne vois pas comment faire ça en SQL.
Merci d'avance.
Oubliez ma réponse précédente, je n'avais pas lu que vous vouliez ventiler
le résultat final en plusieurs records.
Pour créer votre nombre variable d'enregistrement par personne, utilisez une
table temporaire pour stocker vos résultats à l'aide d'une procédure stockée
ou sinon faites un join cartésien sur une table supplémentaire comportant 3
lignes (peut importe les valeurs de ces 3 lignes) et ajouter une clause
Where pour valider l'ajout de chacune de ces trois lignes.
Vous pouvez également deux UNIONS sur trois requêtes SQL mais j'aime moins
ça.
Finalement, je ne comprends pas votre exemple de calcul pour avoir 12 et 140
Km en valeurs finales si votre usager a parcouru un minimum de 4988 Km
durant l'année.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
"jeorme" <jerome.boutin@filtrauto.com> wrote in message
news:uDvc$G7WFHA.3584@TK2MSFTNGP14.phx.gbl...
Bonjour à tous.
J'ai une appli pour la saisie de note de frais. J'ai une table dans
laquelle
est stocké le nom de la personne et ses KM parcouru dans l'année.
Quand l'employé saisie une note il rentre son nombre de KM parcouru pour
cette note.
Par ex:
TABLE_CUMUL:
nom KM_annuel
MARTIN 4988
NOTE
nom DATE KM_parcouru
MARTIN 12/05/05 152
Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année:
TAUX:
classe nb_max taux
A 5000 2
B 20000 1
C 999999 0.5
Donc je voudrais un reqte SQL qui me donne:
NOM TRANCHE TAUX NB_KM
MARTIN A 2 12
MARTIN B 1 140
c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 =
12
qui vont en tranche A
et ensuite 152-12 = 140 qui eu sont en tranche B
Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la
tranche C.
Oubliez ma réponse précédente, je n'avais pas lu que vous vouliez ventiler le résultat final en plusieurs records.
Pour créer votre nombre variable d'enregistrement par personne, utilisez une table temporaire pour stocker vos résultats à l'aide d'une procédure stockée ou sinon faites un join cartésien sur une table supplémentaire comportant 3 lignes (peut importe les valeurs de ces 3 lignes) et ajouter une clause Where pour valider l'ajout de chacune de ces trois lignes.
Vous pouvez également deux UNIONS sur trois requêtes SQL mais j'aime moins ça.
Finalement, je ne comprends pas votre exemple de calcul pour avoir 12 et 140 Km en valeurs finales si votre usager a parcouru un minimum de 4988 Km durant l'année.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC
"jeorme" wrote in message news:uDvc$
Bonjour à tous.
J'ai une appli pour la saisie de note de frais. J'ai une table dans laquelle est stocké le nom de la personne et ses KM parcouru dans l'année.
Quand l'employé saisie une note il rentre son nombre de KM parcouru pour cette note.
Par ex:
TABLE_CUMUL: nom KM_annuel MARTIN 4988
NOTE
nom DATE KM_parcouru MARTIN 12/05/05 152
Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année:
TAUX: classe nb_max taux A 5000 2 B 20000 1 C 999999 0.5
Donc je voudrais un reqte SQL qui me donne:
NOM TRANCHE TAUX NB_KM MARTIN A 2 12 MARTIN B 1 140
c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 = 12 qui vont en tranche A et ensuite 152-12 = 140 qui eu sont en tranche B
Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la tranche C.
Je ne vois pas comment faire ça en SQL.
Merci d'avance.
jeorme
en fait il a parcouru actuellement 4988 km, il fait une nouvelle note de frais avec 152 km supplémentaires. Donc je vais y rembourser en tranche A -> 5000 (maxi tranche A) - 4988 = 12 ensuite il me reste donc 152-12 à ventiler soir 140 qui passeront en tranche B et mon cumul annuel à 4988+152
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a écrit dans le message de news: #L2B$
Oubliez ma réponse précédente, je n'avais pas lu que vous vouliez ventiler le résultat final en plusieurs records.
Pour créer votre nombre variable d'enregistrement par personne, utilisez
une
table temporaire pour stocker vos résultats à l'aide d'une procédure
stockée
ou sinon faites un join cartésien sur une table supplémentaire comportant
3
lignes (peut importe les valeurs de ces 3 lignes) et ajouter une clause Where pour valider l'ajout de chacune de ces trois lignes.
Vous pouvez également deux UNIONS sur trois requêtes SQL mais j'aime moins ça.
Finalement, je ne comprends pas votre exemple de calcul pour avoir 12 et
140
Km en valeurs finales si votre usager a parcouru un minimum de 4988 Km durant l'année.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC
"jeorme" wrote in message news:uDvc$ > Bonjour à tous. > > J'ai une appli pour la saisie de note de frais. J'ai une table dans > laquelle > est stocké le nom de la personne et ses KM parcouru dans l'année. > > Quand l'employé saisie une note il rentre son nombre de KM parcouru pour > cette note. > > Par ex: > > TABLE_CUMUL: > nom KM_annuel > MARTIN 4988 > > > > NOTE > > nom DATE KM_parcouru > MARTIN 12/05/05 152 > > > Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année: > > TAUX: > classe nb_max taux > A 5000 2 > B 20000 1 > C 999999 0.5 > > > Donc je voudrais un reqte SQL qui me donne: > > > NOM TRANCHE TAUX NB_KM > MARTIN A 2 12 > MARTIN B 1 140 > > > c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 > > 12 > qui vont en tranche A > et ensuite 152-12 = 140 qui eu sont en tranche B > > Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la > tranche C. > > Je ne vois pas comment faire ça en SQL. > > > Merci d'avance. > > > >
en fait il a parcouru actuellement 4988 km, il fait une nouvelle note de
frais avec 152 km supplémentaires.
Donc je vais y rembourser en tranche A -> 5000 (maxi tranche A) - 4988 = 12
ensuite il me reste donc 152-12 à ventiler soir 140 qui passeront en tranche
B et mon cumul annuel à 4988+152
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news: #L2B$d8WFHA.3620@TK2MSFTNGP09.phx.gbl...
Oubliez ma réponse précédente, je n'avais pas lu que vous vouliez ventiler
le résultat final en plusieurs records.
Pour créer votre nombre variable d'enregistrement par personne, utilisez
une
table temporaire pour stocker vos résultats à l'aide d'une procédure
stockée
ou sinon faites un join cartésien sur une table supplémentaire comportant
3
lignes (peut importe les valeurs de ces 3 lignes) et ajouter une clause
Where pour valider l'ajout de chacune de ces trois lignes.
Vous pouvez également deux UNIONS sur trois requêtes SQL mais j'aime moins
ça.
Finalement, je ne comprends pas votre exemple de calcul pour avoir 12 et
140
Km en valeurs finales si votre usager a parcouru un minimum de 4988 Km
durant l'année.
--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
"jeorme" <jerome.boutin@filtrauto.com> wrote in message
news:uDvc$G7WFHA.3584@TK2MSFTNGP14.phx.gbl...
> Bonjour à tous.
>
> J'ai une appli pour la saisie de note de frais. J'ai une table dans
> laquelle
> est stocké le nom de la personne et ses KM parcouru dans l'année.
>
> Quand l'employé saisie une note il rentre son nombre de KM parcouru pour
> cette note.
>
> Par ex:
>
> TABLE_CUMUL:
> nom KM_annuel
> MARTIN 4988
>
>
>
> NOTE
>
> nom DATE KM_parcouru
> MARTIN 12/05/05 152
>
>
> Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année:
>
> TAUX:
> classe nb_max taux
> A 5000 2
> B 20000 1
> C 999999 0.5
>
>
> Donc je voudrais un reqte SQL qui me donne:
>
>
> NOM TRANCHE TAUX NB_KM
> MARTIN A 2 12
> MARTIN B 1 140
>
>
> c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 > > 12
> qui vont en tranche A
> et ensuite 152-12 = 140 qui eu sont en tranche B
>
> Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la
> tranche C.
>
> Je ne vois pas comment faire ça en SQL.
>
>
> Merci d'avance.
>
>
>
>
en fait il a parcouru actuellement 4988 km, il fait une nouvelle note de frais avec 152 km supplémentaires. Donc je vais y rembourser en tranche A -> 5000 (maxi tranche A) - 4988 = 12 ensuite il me reste donc 152-12 à ventiler soir 140 qui passeront en tranche B et mon cumul annuel à 4988+152
"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a écrit dans le message de news: #L2B$
Oubliez ma réponse précédente, je n'avais pas lu que vous vouliez ventiler le résultat final en plusieurs records.
Pour créer votre nombre variable d'enregistrement par personne, utilisez
une
table temporaire pour stocker vos résultats à l'aide d'une procédure
stockée
ou sinon faites un join cartésien sur une table supplémentaire comportant
3
lignes (peut importe les valeurs de ces 3 lignes) et ajouter une clause Where pour valider l'ajout de chacune de ces trois lignes.
Vous pouvez également deux UNIONS sur trois requêtes SQL mais j'aime moins ça.
Finalement, je ne comprends pas votre exemple de calcul pour avoir 12 et
140
Km en valeurs finales si votre usager a parcouru un minimum de 4988 Km durant l'année.
-- Sylvain Lafontaine, ing. MVP - Technologies Virtual-PC
"jeorme" wrote in message news:uDvc$ > Bonjour à tous. > > J'ai une appli pour la saisie de note de frais. J'ai une table dans > laquelle > est stocké le nom de la personne et ses KM parcouru dans l'année. > > Quand l'employé saisie une note il rentre son nombre de KM parcouru pour > cette note. > > Par ex: > > TABLE_CUMUL: > nom KM_annuel > MARTIN 4988 > > > > NOTE > > nom DATE KM_parcouru > MARTIN 12/05/05 152 > > > Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année: > > TAUX: > classe nb_max taux > A 5000 2 > B 20000 1 > C 999999 0.5 > > > Donc je voudrais un reqte SQL qui me donne: > > > NOM TRANCHE TAUX NB_KM > MARTIN A 2 12 > MARTIN B 1 140 > > > c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 > > 12 > qui vont en tranche A > et ensuite 152-12 = 140 qui eu sont en tranche B > > Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la > tranche C. > > Je ne vois pas comment faire ça en SQL. > > > Merci d'avance. > > > >
Dominique
il faut ajouter dans ta table taux un km_min et un km_max Classe Km_min KM_max Taux A 0 4999 2 B 5000 19999 1 C 20000 999999 0.5
select Table_cumul.nom, Taux.classe, Taux.taux case when Table_cumul.KM_annuel+Note.Km_parcouru > Taux.KM_max then Taux.KM_max - Note.Km_parcouru when Table_cumul.KM_annuel < Taux.KM_min then Taux.KM_min - Table_cumul.KM_annuel+Note.Km_parcouru else Note.Km_parcouru end from Table_cumul, Note, Taux where Table_cumul.Nom = Note.nom and ( table_cumul.Km_annuel between Taux.km_min and taux.km_max or table_cumul.Km_annuel+note.KM_parcouru between Taux.km_min and taux.km_max )
jeorme a écrit :
Bonjour à tous.
J'ai une appli pour la saisie de note de frais. J'ai une table dans laquelle est stocké le nom de la personne et ses KM parcouru dans l'année.
Quand l'employé saisie une note il rentre son nombre de KM parcouru pour cette note.
Par ex:
TABLE_CUMUL: nom KM_annuel MARTIN 4988
NOTE
nom DATE KM_parcouru MARTIN 12/05/05 152
Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année:
TAUX: classe nb_max taux A 5000 2 B 20000 1 C 999999 0.5
Donc je voudrais un reqte SQL qui me donne:
NOM TRANCHE TAUX NB_KM MARTIN A 2 12 MARTIN B 1 140
c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 = 12 qui vont en tranche A et ensuite 152-12 = 140 qui eu sont en tranche B
Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la tranche C.
Je ne vois pas comment faire ça en SQL.
Merci d'avance.
il faut ajouter dans ta table taux un km_min et un km_max
Classe Km_min KM_max Taux
A 0 4999 2
B 5000 19999 1
C 20000 999999 0.5
select
Table_cumul.nom,
Taux.classe,
Taux.taux
case
when Table_cumul.KM_annuel+Note.Km_parcouru > Taux.KM_max
then Taux.KM_max - Note.Km_parcouru
when Table_cumul.KM_annuel < Taux.KM_min
then Taux.KM_min - Table_cumul.KM_annuel+Note.Km_parcouru
else Note.Km_parcouru
end
from
Table_cumul,
Note,
Taux
where
Table_cumul.Nom = Note.nom
and (
table_cumul.Km_annuel
between Taux.km_min and taux.km_max
or table_cumul.Km_annuel+note.KM_parcouru
between Taux.km_min and taux.km_max
)
jeorme a écrit :
Bonjour à tous.
J'ai une appli pour la saisie de note de frais. J'ai une table dans laquelle
est stocké le nom de la personne et ses KM parcouru dans l'année.
Quand l'employé saisie une note il rentre son nombre de KM parcouru pour
cette note.
Par ex:
TABLE_CUMUL:
nom KM_annuel
MARTIN 4988
NOTE
nom DATE KM_parcouru
MARTIN 12/05/05 152
Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année:
TAUX:
classe nb_max taux
A 5000 2
B 20000 1
C 999999 0.5
Donc je voudrais un reqte SQL qui me donne:
NOM TRANCHE TAUX NB_KM
MARTIN A 2 12
MARTIN B 1 140
c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 = 12
qui vont en tranche A
et ensuite 152-12 = 140 qui eu sont en tranche B
Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la
tranche C.
il faut ajouter dans ta table taux un km_min et un km_max Classe Km_min KM_max Taux A 0 4999 2 B 5000 19999 1 C 20000 999999 0.5
select Table_cumul.nom, Taux.classe, Taux.taux case when Table_cumul.KM_annuel+Note.Km_parcouru > Taux.KM_max then Taux.KM_max - Note.Km_parcouru when Table_cumul.KM_annuel < Taux.KM_min then Taux.KM_min - Table_cumul.KM_annuel+Note.Km_parcouru else Note.Km_parcouru end from Table_cumul, Note, Taux where Table_cumul.Nom = Note.nom and ( table_cumul.Km_annuel between Taux.km_min and taux.km_max or table_cumul.Km_annuel+note.KM_parcouru between Taux.km_min and taux.km_max )
jeorme a écrit :
Bonjour à tous.
J'ai une appli pour la saisie de note de frais. J'ai une table dans laquelle est stocké le nom de la personne et ses KM parcouru dans l'année.
Quand l'employé saisie une note il rentre son nombre de KM parcouru pour cette note.
Par ex:
TABLE_CUMUL: nom KM_annuel MARTIN 4988
NOTE
nom DATE KM_parcouru MARTIN 12/05/05 152
Mon prob est que j'ai un taux en fonction des KM parcouru dans l'année:
TAUX: classe nb_max taux A 5000 2 B 20000 1 C 999999 0.5
Donc je voudrais un reqte SQL qui me donne:
NOM TRANCHE TAUX NB_KM MARTIN A 2 12 MARTIN B 1 140
c'est à dire que pour ma tranche A j'ai 5000 (max de tranche A) - 4988 = 12 qui vont en tranche A et ensuite 152-12 = 140 qui eu sont en tranche B
Bien sur pour s'il ça faisait plus que 20000 il fadrait en passer sur la tranche C.