Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
pour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme année
est apparue.
Merci Beaucoup !!
Mathieu.
Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
pour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme année
est apparue.
Merci Beaucoup !!
Mathieu.
Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
pour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme année
est apparue.
Merci Beaucoup !!
Mathieu.
SELECT Year, SUBSTRING(Amount, 3, 1) As Quarter, Amount
FROM [J'ai une table qui ressemble a ca]
A +
Jay Mathieu a écrit:Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problème
pour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme
année
est apparue.
Merci Beaucoup !!
Mathieu.
SELECT Year, SUBSTRING(Amount, 3, 1) As Quarter, Amount
FROM [J'ai une table qui ressemble a ca]
A +
Jay Mathieu a écrit:
Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problème
pour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme
année
est apparue.
Merci Beaucoup !!
Mathieu.
SELECT Year, SUBSTRING(Amount, 3, 1) As Quarter, Amount
FROM [J'ai une table qui ressemble a ca]
A +
Jay Mathieu a écrit:Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problème
pour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme
année
est apparue.
Merci Beaucoup !!
Mathieu.
Tu peux faire bien plus simple!
Tu fait un SELECT COUNT(*) FROM tatable WHERE Year = 1990
Donc tu n'es pas obligé d'avoir une colone qui sert à ça!
"Jay Mathieu" a écrit dans le message de
news:bhg9hj$ted$
> Bonjour tout le monde,
>
> Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problème
> pour vous :
>
> J'ai une table qui ressemble a ca :
> Year Amount
> ---- ------
> 1990 1.1
> 1990 1.2
> 1990 1.3
> 1990 1.4
> 1991 2.1
> 1991 2.2
> 1991 2.3
> 1991 2.4
> 1992 4.2
> 1993 5.1
> 1993 5.2
>
> Et je veux que ca me donne ca :
> Year Quarter Amount
> ---- ------- ------
> 1990 1 1.1
> 1990 2 1.2
> 1990 3 1.3
> 1990 4 1.4
> 1991 1 2.1
> 1991 2 2.2
> 1991 3 2.3
> 1991 4 2.4
> 1992 1 4.2
> 1993 1 5.1
> 1993 2 5.2
>
> Est-ce possible avec un Select ????
> En gros, le but du jeu est de calculer le nombre de fois qu'une meme
> est apparue.
>
> Merci Beaucoup !!
>
> Mathieu.
>
>
Tu peux faire bien plus simple!
Tu fait un SELECT COUNT(*) FROM tatable WHERE Year = 1990
Donc tu n'es pas obligé d'avoir une colone qui sert à ça!
"Jay Mathieu" <mathieu.jay@laposte.net> a écrit dans le message de
news:bhg9hj$ted$1@news-reader4.wanadoo.fr...
> Bonjour tout le monde,
>
> Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problème
> pour vous :
>
> J'ai une table qui ressemble a ca :
> Year Amount
> ---- ------
> 1990 1.1
> 1990 1.2
> 1990 1.3
> 1990 1.4
> 1991 2.1
> 1991 2.2
> 1991 2.3
> 1991 2.4
> 1992 4.2
> 1993 5.1
> 1993 5.2
>
> Et je veux que ca me donne ca :
> Year Quarter Amount
> ---- ------- ------
> 1990 1 1.1
> 1990 2 1.2
> 1990 3 1.3
> 1990 4 1.4
> 1991 1 2.1
> 1991 2 2.2
> 1991 3 2.3
> 1991 4 2.4
> 1992 1 4.2
> 1993 1 5.1
> 1993 2 5.2
>
> Est-ce possible avec un Select ????
> En gros, le but du jeu est de calculer le nombre de fois qu'une meme
> est apparue.
>
> Merci Beaucoup !!
>
> Mathieu.
>
>
Tu peux faire bien plus simple!
Tu fait un SELECT COUNT(*) FROM tatable WHERE Year = 1990
Donc tu n'es pas obligé d'avoir une colone qui sert à ça!
"Jay Mathieu" a écrit dans le message de
news:bhg9hj$ted$
> Bonjour tout le monde,
>
> Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problème
> pour vous :
>
> J'ai une table qui ressemble a ca :
> Year Amount
> ---- ------
> 1990 1.1
> 1990 1.2
> 1990 1.3
> 1990 1.4
> 1991 2.1
> 1991 2.2
> 1991 2.3
> 1991 2.4
> 1992 4.2
> 1993 5.1
> 1993 5.2
>
> Et je veux que ca me donne ca :
> Year Quarter Amount
> ---- ------- ------
> 1990 1 1.1
> 1990 2 1.2
> 1990 3 1.3
> 1990 4 1.4
> 1991 1 2.1
> 1991 2 2.2
> 1991 3 2.3
> 1991 4 2.4
> 1992 1 4.2
> 1993 1 5.1
> 1993 2 5.2
>
> Est-ce possible avec un Select ????
> En gros, le but du jeu est de calculer le nombre de fois qu'une meme
> est apparue.
>
> Merci Beaucoup !!
>
> Mathieu.
>
>
Jay,
Ta table a 4 rangées dont l'année est 1990, et il ne me
semble pas possible de determiner laquelle correspond au
quarter 1, laquelle au quarter 2, etc. Pourriez-vous donnez
un regle pour décider le quarter à partir des valeurs d'une
rangée?
-- Steve Kass
-- Drew University
-- Ref: E285A187-E263-4CCE-BA42-2AE0DAA4533D
Jay Mathieu wrote:
> Bonjour tout le monde,
>
>Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
>pour vous :
>
>J'ai une table qui ressemble a ca :
>Year Amount
>---- ------
>1990 1.1
>1990 1.2
>1990 1.3
>1990 1.4
>1991 2.1
>1991 2.2
>1991 2.3
>1991 2.4
>1992 4.2
>1993 5.1
>1993 5.2
>
>Et je veux que ca me donne ca :
>Year Quarter Amount
>---- ------- ------
>1990 1 1.1
>1990 2 1.2
>1990 3 1.3
>1990 4 1.4
>1991 1 2.1
>1991 2 2.2
>1991 3 2.3
>1991 4 2.4
>1992 1 4.2
>1993 1 5.1
>1993 2 5.2
>
>Est-ce possible avec un Select ????
>En gros, le but du jeu est de calculer le nombre de fois qu'une meme
>est apparue.
>
>Merci Beaucoup !!
>
>Mathieu.
>
>
>
>
Jay,
Ta table a 4 rangées dont l'année est 1990, et il ne me
semble pas possible de determiner laquelle correspond au
quarter 1, laquelle au quarter 2, etc. Pourriez-vous donnez
un regle pour décider le quarter à partir des valeurs d'une
rangée?
-- Steve Kass
-- Drew University
-- Ref: E285A187-E263-4CCE-BA42-2AE0DAA4533D
Jay Mathieu wrote:
> Bonjour tout le monde,
>
>Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
>pour vous :
>
>J'ai une table qui ressemble a ca :
>Year Amount
>---- ------
>1990 1.1
>1990 1.2
>1990 1.3
>1990 1.4
>1991 2.1
>1991 2.2
>1991 2.3
>1991 2.4
>1992 4.2
>1993 5.1
>1993 5.2
>
>Et je veux que ca me donne ca :
>Year Quarter Amount
>---- ------- ------
>1990 1 1.1
>1990 2 1.2
>1990 3 1.3
>1990 4 1.4
>1991 1 2.1
>1991 2 2.2
>1991 3 2.3
>1991 4 2.4
>1992 1 4.2
>1993 1 5.1
>1993 2 5.2
>
>Est-ce possible avec un Select ????
>En gros, le but du jeu est de calculer le nombre de fois qu'une meme
>est apparue.
>
>Merci Beaucoup !!
>
>Mathieu.
>
>
>
>
Jay,
Ta table a 4 rangées dont l'année est 1990, et il ne me
semble pas possible de determiner laquelle correspond au
quarter 1, laquelle au quarter 2, etc. Pourriez-vous donnez
un regle pour décider le quarter à partir des valeurs d'une
rangée?
-- Steve Kass
-- Drew University
-- Ref: E285A187-E263-4CCE-BA42-2AE0DAA4533D
Jay Mathieu wrote:
> Bonjour tout le monde,
>
>Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
>pour vous :
>
>J'ai une table qui ressemble a ca :
>Year Amount
>---- ------
>1990 1.1
>1990 1.2
>1990 1.3
>1990 1.4
>1991 2.1
>1991 2.2
>1991 2.3
>1991 2.4
>1992 4.2
>1993 5.1
>1993 5.2
>
>Et je veux que ca me donne ca :
>Year Quarter Amount
>---- ------- ------
>1990 1 1.1
>1990 2 1.2
>1990 3 1.3
>1990 4 1.4
>1991 1 2.1
>1991 2 2.2
>1991 3 2.3
>1991 4 2.4
>1992 1 4.2
>1993 1 5.1
>1993 2 5.2
>
>Est-ce possible avec un Select ????
>En gros, le but du jeu est de calculer le nombre de fois qu'une meme
>est apparue.
>
>Merci Beaucoup !!
>
>Mathieu.
>
>
>
>
en fait, il n'y a pas de règle, faut seulement que la première fois que l'on
voi l'année 1990, on mette 1, la 2ième fois on met 2, la 3ième fois ... 3
.... et quelque soit la valeur du Amount
"Steve Kass" wrote in message
news:Jay,
Ta table a 4 rangées dont l'année est 1990, et il ne me
semble pas possible de determiner laquelle correspond au
quarter 1, laquelle au quarter 2, etc. Pourriez-vous donnez
un regle pour décider le quarter à partir des valeurs d'une
rangée?
-- Steve Kass
-- Drew University
-- Ref: E285A187-E263-4CCE-BA42-2AE0DAA4533D
Jay Mathieu wrote:Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problèmepour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme
annéeest apparue.
Merci Beaucoup !!
Mathieu.
en fait, il n'y a pas de règle, faut seulement que la première fois que l'on
voi l'année 1990, on mette 1, la 2ième fois on met 2, la 3ième fois ... 3
.... et quelque soit la valeur du Amount
"Steve Kass" <skass@drew.edu> wrote in message
news:OMzSrpGZDHA.1620@TK2MSFTNGP12.phx.gbl...
Jay,
Ta table a 4 rangées dont l'année est 1990, et il ne me
semble pas possible de determiner laquelle correspond au
quarter 1, laquelle au quarter 2, etc. Pourriez-vous donnez
un regle pour décider le quarter à partir des valeurs d'une
rangée?
-- Steve Kass
-- Drew University
-- Ref: E285A187-E263-4CCE-BA42-2AE0DAA4533D
Jay Mathieu wrote:
Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problème
pour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme
année
est apparue.
Merci Beaucoup !!
Mathieu.
en fait, il n'y a pas de règle, faut seulement que la première fois que l'on
voi l'année 1990, on mette 1, la 2ième fois on met 2, la 3ième fois ... 3
.... et quelque soit la valeur du Amount
"Steve Kass" wrote in message
news:Jay,
Ta table a 4 rangées dont l'année est 1990, et il ne me
semble pas possible de determiner laquelle correspond au
quarter 1, laquelle au quarter 2, etc. Pourriez-vous donnez
un regle pour décider le quarter à partir des valeurs d'une
rangée?
-- Steve Kass
-- Drew University
-- Ref: E285A187-E263-4CCE-BA42-2AE0DAA4533D
Jay Mathieu wrote:Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problèmepour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme
annéeest apparue.
Merci Beaucoup !!
Mathieu.
Jay,
Il est tout-à-fait possible que la requête
SELECT * FROM T
ORDER BY Year
executée aujourd'hui donnera
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
mais executée demain donnera
Year Amount
---- ------
1990 1.3
1990 1.2
1990 1.1
1990 1.4
1991 2.2
1991 2.3
1991 2.1
1991 2.3
1991 2.4
1992 4.2
1993 5.2
1993 5.1
Les rangées d'une table n'ont pas une ordre
propre - par contre ce sont comme des billes
dans un sac, et elles ne se rangent en ordre qu'au
moment de sélection.
Je vois deux possibilités:
1. Dans cet exemple, les valeurs [Amount] se présentent
en ordre croissant. Si vous croyez que la valeur de
"Quarter 1" est toujours la valeur la plus petite
d'une année, Quarter 2 est la plus petite des restes, etc.,
alter table T add Quarter tinyint
update T set
Quarter = (
select count(*) from T T2
where T2.Year = T.Year
and T2.Year <= T.Year
)
Au cas de duplication d'une valeur Amount, vous
trouverez des répétitions dans la colonne Quarter.
2. On peut espérer (sans garantie) que l'on peut
insérer les rangées dans une table temporaire
dans l'ordre voulue avec une colonne unique:
select identity(int, 1, 1) as pk, Year, Amount, cast(1 as tinyint) as
Quarter
into #T from T
go
update #T set
Quarter = (
select count(*) from #T T2
where T2.Year = #T.Year
and T2.pk <= #T.pk
)
go
truncate table T
alter table T add Quarter tinyint
insert into T select Year, Amount, Quarter from #T
SK
Sans pouvoir identifier une propriété
La sequence de présentation de vos rangées dans le
resultat de SELECT * FROM T n'est pas une propriété de la rangée,
et il n'y a aucune garantie que cette ordre sera toujours
la même, sans ajouter ORDER BY <expression>
que la requête présentent les données
dans une certaine ordre, il est impossible de
Le problème est que
Jay Mathieu wrote:en fait, il n'y a pas de règle, faut seulement que la première fois
que l'on
voi l'année 1990, on mette 1, la 2ième fois on met 2, la 3ième fois
... 3
.... et quelque soit la valeur du Amount
"Steve Kass" wrote in message
news:Jay,
Ta table a 4 rangées dont l'année est 1990, et il ne me
semble pas possible de determiner laquelle correspond au
quarter 1, laquelle au quarter 2, etc. Pourriez-vous donnez
un regle pour décider le quarter à partir des valeurs d'une
rangée?
-- Steve Kass
-- Drew University
-- Ref: E285A187-E263-4CCE-BA42-2AE0DAA4533D
Jay Mathieu wrote:Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problèmepour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme
annéeest apparue.
Merci Beaucoup !!
Mathieu.
Jay,
Il est tout-à-fait possible que la requête
SELECT * FROM T
ORDER BY Year
executée aujourd'hui donnera
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
mais executée demain donnera
Year Amount
---- ------
1990 1.3
1990 1.2
1990 1.1
1990 1.4
1991 2.2
1991 2.3
1991 2.1
1991 2.3
1991 2.4
1992 4.2
1993 5.2
1993 5.1
Les rangées d'une table n'ont pas une ordre
propre - par contre ce sont comme des billes
dans un sac, et elles ne se rangent en ordre qu'au
moment de sélection.
Je vois deux possibilités:
1. Dans cet exemple, les valeurs [Amount] se présentent
en ordre croissant. Si vous croyez que la valeur de
"Quarter 1" est toujours la valeur la plus petite
d'une année, Quarter 2 est la plus petite des restes, etc.,
alter table T add Quarter tinyint
update T set
Quarter = (
select count(*) from T T2
where T2.Year = T.Year
and T2.Year <= T.Year
)
Au cas de duplication d'une valeur Amount, vous
trouverez des répétitions dans la colonne Quarter.
2. On peut espérer (sans garantie) que l'on peut
insérer les rangées dans une table temporaire
dans l'ordre voulue avec une colonne unique:
select identity(int, 1, 1) as pk, Year, Amount, cast(1 as tinyint) as
Quarter
into #T from T
go
update #T set
Quarter = (
select count(*) from #T T2
where T2.Year = #T.Year
and T2.pk <= #T.pk
)
go
truncate table T
alter table T add Quarter tinyint
insert into T select Year, Amount, Quarter from #T
SK
Sans pouvoir identifier une propriété
La sequence de présentation de vos rangées dans le
resultat de SELECT * FROM T n'est pas une propriété de la rangée,
et il n'y a aucune garantie que cette ordre sera toujours
la même, sans ajouter ORDER BY <expression>
que la requête présentent les données
dans une certaine ordre, il est impossible de
Le problème est que
Jay Mathieu wrote:
en fait, il n'y a pas de règle, faut seulement que la première fois
que l'on
voi l'année 1990, on mette 1, la 2ième fois on met 2, la 3ième fois
... 3
.... et quelque soit la valeur du Amount
"Steve Kass" <skass@drew.edu> wrote in message
news:OMzSrpGZDHA.1620@TK2MSFTNGP12.phx.gbl...
Jay,
Ta table a 4 rangées dont l'année est 1990, et il ne me
semble pas possible de determiner laquelle correspond au
quarter 1, laquelle au quarter 2, etc. Pourriez-vous donnez
un regle pour décider le quarter à partir des valeurs d'une
rangée?
-- Steve Kass
-- Drew University
-- Ref: E285A187-E263-4CCE-BA42-2AE0DAA4533D
Jay Mathieu wrote:
Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problème
pour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme
année
est apparue.
Merci Beaucoup !!
Mathieu.
Jay,
Il est tout-à-fait possible que la requête
SELECT * FROM T
ORDER BY Year
executée aujourd'hui donnera
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
mais executée demain donnera
Year Amount
---- ------
1990 1.3
1990 1.2
1990 1.1
1990 1.4
1991 2.2
1991 2.3
1991 2.1
1991 2.3
1991 2.4
1992 4.2
1993 5.2
1993 5.1
Les rangées d'une table n'ont pas une ordre
propre - par contre ce sont comme des billes
dans un sac, et elles ne se rangent en ordre qu'au
moment de sélection.
Je vois deux possibilités:
1. Dans cet exemple, les valeurs [Amount] se présentent
en ordre croissant. Si vous croyez que la valeur de
"Quarter 1" est toujours la valeur la plus petite
d'une année, Quarter 2 est la plus petite des restes, etc.,
alter table T add Quarter tinyint
update T set
Quarter = (
select count(*) from T T2
where T2.Year = T.Year
and T2.Year <= T.Year
)
Au cas de duplication d'une valeur Amount, vous
trouverez des répétitions dans la colonne Quarter.
2. On peut espérer (sans garantie) que l'on peut
insérer les rangées dans une table temporaire
dans l'ordre voulue avec une colonne unique:
select identity(int, 1, 1) as pk, Year, Amount, cast(1 as tinyint) as
Quarter
into #T from T
go
update #T set
Quarter = (
select count(*) from #T T2
where T2.Year = #T.Year
and T2.pk <= #T.pk
)
go
truncate table T
alter table T add Quarter tinyint
insert into T select Year, Amount, Quarter from #T
SK
Sans pouvoir identifier une propriété
La sequence de présentation de vos rangées dans le
resultat de SELECT * FROM T n'est pas une propriété de la rangée,
et il n'y a aucune garantie que cette ordre sera toujours
la même, sans ajouter ORDER BY <expression>
que la requête présentent les données
dans une certaine ordre, il est impossible de
Le problème est que
Jay Mathieu wrote:en fait, il n'y a pas de règle, faut seulement que la première fois
que l'on
voi l'année 1990, on mette 1, la 2ième fois on met 2, la 3ième fois
... 3
.... et quelque soit la valeur du Amount
"Steve Kass" wrote in message
news:Jay,
Ta table a 4 rangées dont l'année est 1990, et il ne me
semble pas possible de determiner laquelle correspond au
quarter 1, laquelle au quarter 2, etc. Pourriez-vous donnez
un regle pour décider le quarter à partir des valeurs d'une
rangée?
-- Steve Kass
-- Drew University
-- Ref: E285A187-E263-4CCE-BA42-2AE0DAA4533D
Jay Mathieu wrote:Bonjour tout le monde,
Je suis un peu nouveau dans ce joli monde de SQL, et j'ai un petit
problèmepour vous :
J'ai une table qui ressemble a ca :
Year Amount
---- ------
1990 1.1
1990 1.2
1990 1.3
1990 1.4
1991 2.1
1991 2.2
1991 2.3
1991 2.4
1992 4.2
1993 5.1
1993 5.2
Et je veux que ca me donne ca :
Year Quarter Amount
---- ------- ------
1990 1 1.1
1990 2 1.2
1990 3 1.3
1990 4 1.4
1991 1 2.1
1991 2 2.2
1991 3 2.3
1991 4 2.4
1992 1 4.2
1993 1 5.1
1993 2 5.2
Est-ce possible avec un Select ????
En gros, le but du jeu est de calculer le nombre de fois qu'une meme
annéeest apparue.
Merci Beaucoup !!
Mathieu.