am revenit..
in primul rand trebuie neaparat mentionez ca m-a luat cu dureri de cap incercand sa inteleg ce am sris eu in descrierea problemei asa ca mltumesc nespus celor care au rezistat tentatiei de a trece mai departe si au incercat sa ma ajute;
in al doilea rand am reusit sa gasec inca un raspuns la problema mea si am decis sa il postez aici (fara prea multe explicatii pt ca nu ma pricep la alea)
asta ar fi tabelul de test:
CREATE TABLE [dbo].[Table_1](
[id] [int] IDENTITY(1,1) NOT NULL,
[sub_id] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
------------------------------------------------------------------------------------------------------------------------
acestea sunt datele de plecare (daca poate sa imi spuna cineva cum sa scriptez continutul unui tabel ar fi super) - dar se vede mai bine ce e nevoie in rezultate
1 | a |
2 | a |
3 | ab |
4 | b |
5 | cdf |
6 | dfds |
7 | ddd |
8 | cdf |
9 | adf |
10 | dfds |
11 | bb |
12 | cc |
13 | ddd |
14 | ddd |
NULL | NULL |
------------------------------------------------------------------------------------------------------------------------
acestea sunt rezultatele:
1 | a | 1 |
2 | a | 2 |
3 | ab | 1 |
9 | adf | 1 |
4 | b | 1 |
11 | bb | 1 |
12 | cc | 1 |
5 | cdf | 1 |
8 | cdf | 2 |
7 | ddd | 1 |
13 | ddd | 2 |
14 | ddd | 3 |
6 | dfds | 1 |
10 | dfds | 2 |
NULL | NULL | NULL |
se poate observa ca am daugat o noua coloana care itroduce un fel de sub_id care incepe de la 1 in cazul fiecarui grup de inregistrari duplicate si incrementeaza pana la sfarsitul grupului.
eu aveam nevoie de un query care sa imi genereze datele de pe acea coloana folosind ce se gasea in primele 2 coloane (prima era un id unic pe tabel)
bineinteles ca aceasta este o reprezentare mult simplificata a problemei mele (inca o data imi cer scuze ca nu am dat un exemplu atat de clar de la inceput) si cred ca este irelevant motivul pt care ar vrea cineva sa faca ce am prezentat mai sus
iar o rezolvare destul de interesanta la care am ajuns de curand cu mult ajutor din partea unui prieten ar fi urmatoarea:
SELECT id, SUBSTRING(sub_id, 1, 10) AS init, SUBSTRING(CAST
((SELECT COUNT(sub_id) + 1 AS Expr1
FROM Table_1 AS t2
WHERE (Table_1.id > id) AND (Table_1.sub_id = sub_id)) AS nvarchar(10)) + sub_id, 1, 1) AS result
FROM Table_1
ORDER BY init, result
daca poate sa imi spuna cineva care solutie este mai performanta (aceasta care foloseste COUNT sau cea in care se foloseste un cursor) m-ar scuti de testele care ar merita facute.

sau macar sa imi dati cateva linii care ar trebui urmarite pt un astfel de test, thx.