J'ai des données stockées dans une table sous la forme de branches d'un arbre. Toutes ces branches ont été réalisées après un processus d'itération spécifique. Cependant, la séquence des branches faites par moi et la séquence des branches réellement requises ne sont pas exactement identiques. Pour plus de clarté, c'est la séquence requise pour les branches.Comment obtenir le sous-ensemble le plus proche (groupe de lignes) d'un autre groupe de lignes
Et les branches que j'ai fait sont aussi:
Ainsi, la Direction générale no. 5 en haut de l'image est assigné. 4 dans ma requête sql à cause de toutes les branches de couleur rouge faites après avoir fait toutes les branches de couleur noire.
Par conséquent, est-il possible, je pourrais décaler le numéro de branche. 9 de ma sortie sql à la branche requise. 4 à partir de la première capture d'écran, Red Branch no. 4 est le sous-ensemble le plus proche de Black Branch no. 3. Et de même Red Branch no. 6 est le sous-ensemble le plus proche de Black Branch no. 5 et 7 est pour 6.
Le contenu de ma table sql est aussi:
DECLARE @tbl AS TABLE(
State_ID INT,
BranchNo INT,
Share FLOAT
)
INSERT INTO @tbl
SELECT 30500095, 1 ,1
UNION ALL SELECT 30500096, 1 ,0.0958083832335329
UNION ALL SELECT 30500097, 1 ,0.5625
UNION ALL SELECT 30500098, 1 ,0.222222222222222
UNION ALL SELECT 30500099, 1 ,1
UNION ALL SELECT 30500100, 1 ,0.5
UNION ALL SELECT 30500101, 1 ,1
UNION ALL SELECT 30500095, 2 ,1
UNION ALL SELECT 30500096, 2 ,0.0958083832335329
UNION ALL SELECT 30500097, 2 ,0.5625
UNION ALL SELECT 30500098, 2 ,0.222222222222222
UNION ALL SELECT 30500099, 2 ,1
UNION ALL SELECT 30500102, 2 ,0.5
UNION ALL SELECT 30500095, 3 ,1
UNION ALL SELECT 30500096, 3 ,0.0958083832335329
UNION ALL SELECT 30500097, 3 ,0.5625
UNION ALL SELECT 30500103, 3 ,0.666666666666667
UNION ALL SELECT 30500104, 3 ,0.666666666666667
UNION ALL SELECT 30500105, 3 ,0.75
UNION ALL SELECT 30500095, 4 ,1
UNION ALL SELECT 30500096, 4 ,0.0958083832335329
UNION ALL SELECT 30500097, 4 ,0.5625
UNION ALL SELECT 30500103, 4 ,0.666666666666667
UNION ALL SELECT 30500106, 4 ,0.333333333333333
UNION ALL SELECT 30500107, 4 ,0.5
UNION ALL SELECT 30500095, 5 ,1
UNION ALL SELECT 30500096, 5 ,0.0958083832335329
UNION ALL SELECT 30500108, 5 ,0.4375
UNION ALL SELECT 30500109, 5 ,0.285714285714286
UNION ALL SELECT 30500095, 6 ,1
UNION ALL SELECT 30500096, 6 ,0.0958083832335329
UNION ALL SELECT 30500108, 6 ,0.4375
UNION ALL SELECT 30500110, 6 ,0.714285714285714
UNION ALL SELECT 30500111, 6 ,0.4
UNION ALL SELECT 30500095, 7 ,1
UNION ALL SELECT 30500112, 7 ,0.904191616766467
UNION ALL SELECT 30500113, 7 ,0.417218543046358
UNION ALL SELECT 30500095, 8 ,1
UNION ALL SELECT 30500096, 8 ,0.0958083832335329
UNION ALL SELECT 30500097, 8 ,0.5625
UNION ALL SELECT 30500095, 9 ,1
UNION ALL SELECT 30500096, 9 ,0.0958083832335329
UNION ALL SELECT 30500097, 9 ,0.5625
UNION ALL SELECT 30500103, 9 ,0.666666666666667
UNION ALL SELECT 30500104, 9 ,0.666666666666667
UNION ALL SELECT 30500095, 10 ,1
UNION ALL SELECT 30500096, 10 ,0.0958083832335329
UNION ALL SELECT 30500097, 10 ,0.5625
UNION ALL SELECT 30500103, 10 ,0.666666666666667
UNION ALL SELECT 30500106, 10 ,0.333333333333333
UNION ALL SELECT 30500095, 11 ,1
UNION ALL SELECT 30500096, 11 ,0.0958083832335329
UNION ALL SELECT 30500108, 11 ,0.4375
UNION ALL SELECT 30500110, 11 ,0.714285714285714
UNION ALL SELECT 30500095, 12 ,1
UNION ALL SELECT 30500112, 12 ,0.904191616766467
SELECT * FROM @tbl
Merci pour la réponse. Je ne veux pas que la structure soit sauvegardée au format pivot, comme le montre la première image, mais je veux que la structure soit sauvegardée en seconde image. C'est juste que je veux que les numéros de branche soient ajustés de sorte que les sous-ensembles les plus proches puissent avoir un numéro à côté de leurs supersets seulement. –
Oh maintenant je vois la différence que tu cherches –