0
votes

Boucle SQL et rejoindre

J'ai une table: xxx

et une deuxième table: xxx

J'ai besoin d'avoir une table: xxx

Comment puis-je atteindre la table finale?
Rev A est pour les versions 1-3, REV B est versions 4-7, Rev C est versions 5-13. Si j'essayais de faire cela avec VB Excel, j'ajouterais un 1 dans une nouvelle colonne. Ensuite, obtenez la première valeur Vers (3) - Second Valeur Vers (7), puis sur la sortie 4 ....
Ensuite, j'utiliserais une certaine logique si <= nouvelle colonne et> = Vers Write Rev.
Je ne sais pas comment faire cela dans SQL et je dois!


3 commentaires

Quelle est la logique qui détermine la troisième colonne de la table de sortie?


Je vous suggérerais de lire ce premier: Stackoverflow.com/help/how-to-ask . Vous devriez vraiment donner un peu plus de contexte.


Voulez-vous dire que REV C est 8-13?


4 Réponses :


0
votes

Utiliser externe Appliquer : xxx

ceci obtient la version "suivante" dans Tablef par rapport à chaque version de .


0 commentaires

0
votes

Vous pouvez également faire cela avec une sous-requête:

SELECT *
, (SELECT TOP 1 b.rev 
   FROM Table1 b 
   WHERE a.version <= b.vers 
   ORDER BY b.vers)
FROM Table2 a


0 commentaires

0
votes

ou une troisième version:

declare @t1 table(V int, R char(1))
insert @t1 values (3,'A'),(7,'B'),(13,'C')
declare @t2 table(I char(3), V int)
insert @t2 values ('aab',1),('adr',2),('bhj',3),('bgt',4),('nnh',4),('ggt',7)

select t2.*, t1.R 
from @t2 t2
join @t1 t1 on t1.V>=t2.V and not exists(select * from @t1 t3 where t3.V>=t2.v and t3.V<t1.V)


0 commentaires

2
votes

Essayez ceci que vous pouvez le faire en joignant des tables xxx


2 commentaires

Cela ne va pas fonctionner - cela n'attribuera que T1.REV aux versions 3, 7, 13 ... etc.


Vous pouvez essayer ceci si cela ne fonctionne pas Sélectionnez T2.INFO, T2.Version, T1.REV à partir de TABLE2 T2 JOIN TABLE1 T1 ON (T2.Version = T1.VERS)