andyw27
asked on
Help with complex query
Hi,
I’m having trouble working how to finish my SQL statement
Basically my SQL gets me this:
sequence UniqueItemId reports_to
0 18898-0 18898
1 18899-1 18898
2 18900-2 18899
3 14928-3 18900
4 19624-4 14928
5 20071-5 19624
6 19625-6 19624
7 237-7 19624
8 12389-8 19624
9 12390-9 12389
10 14100-10 19624
11 19623-11 19624
12 19841-12 19624
13 19842-13 19841
14 12222-14 14928
15 12225-15 14928
16 14580-16 14928
17 12232-17 14928
18 12385-18 12232
19 12396-19 14928
You have the making of data that I hopefully will be able to get into a format that allows me to build a chart.
This would be easy if the item_id value was unique, however it’s not, to try and address this I added a -# to the end.
What I now need to do which I can’t figure out is get to state where the data looks like this
sequence UniqueItemId reports_to new_reports_to
0 18898-0 18898
1 18899-1 18898 18898-0
2 18900-2 18899 18899-1
3 14928-3 18900 18900-2
4 19624-4 14928 14928-3
5 20071-5 19624 19624-4
6 19625-6 19624 19624-4
7 237-7 19624 19624-4
8 12389-8 19624 19624-4
9 12390-9 12389 12389-8
10 14100-10 19624 19624-4
11 19623-11 19624 19624-4
12 19841-12 19624 19624-4
13 19842-13 19841 19841-12
14 12222-14 14928 14928-3
15 12225-15 14928 14928-3
16 14580-16 14928 14928-3
17 12232-17 14928 14928-3
18 12385-18 12232 12232-17
19 12396-19 14928 14928-3
Basically updating the reports to link with the correct identifier.
Any suggestions as to how I can accomplish this is most appreciated as I’m fresh out of ideas
The actual data has 1000s of rows.
TIA.
I’m having trouble working how to finish my SQL statement
Basically my SQL gets me this:
sequence UniqueItemId reports_to
0 18898-0 18898
1 18899-1 18898
2 18900-2 18899
3 14928-3 18900
4 19624-4 14928
5 20071-5 19624
6 19625-6 19624
7 237-7 19624
8 12389-8 19624
9 12390-9 12389
10 14100-10 19624
11 19623-11 19624
12 19841-12 19624
13 19842-13 19841
14 12222-14 14928
15 12225-15 14928
16 14580-16 14928
17 12232-17 14928
18 12385-18 12232
19 12396-19 14928
You have the making of data that I hopefully will be able to get into a format that allows me to build a chart.
This would be easy if the item_id value was unique, however it’s not, to try and address this I added a -# to the end.
What I now need to do which I can’t figure out is get to state where the data looks like this
sequence UniqueItemId reports_to new_reports_to
0 18898-0 18898
1 18899-1 18898 18898-0
2 18900-2 18899 18899-1
3 14928-3 18900 18900-2
4 19624-4 14928 14928-3
5 20071-5 19624 19624-4
6 19625-6 19624 19624-4
7 237-7 19624 19624-4
8 12389-8 19624 19624-4
9 12390-9 12389 12389-8
10 14100-10 19624 19624-4
11 19623-11 19624 19624-4
12 19841-12 19624 19624-4
13 19842-13 19841 19841-12
14 12222-14 14928 14928-3
15 12225-15 14928 14928-3
16 14580-16 14928 14928-3
17 12232-17 14928 14928-3
18 12385-18 12232 12232-17
19 12396-19 14928 14928-3
Basically updating the reports to link with the correct identifier.
Any suggestions as to how I can accomplish this is most appreciated as I’m fresh out of ideas
The actual data has 1000s of rows.
TIA.
ASKER
Maybe I’ve been staring at the problem too long, could you set something up that basically says
Search the rows and return uniqueitemid where the first 5 digits = report to and the number after the dash is less than the current row value of column Sequence, encapsulate this into an update statements that runs on temp table which current holds this data?
Unfortunately the SQL statement is on a system that has no connectivity so I can’t really post it.
Search the rows and return uniqueitemid where the first 5 digits = report to and the number after the dash is less than the current row value of column Sequence, encapsulate this into an update statements that runs on temp table which current holds this data?
Unfortunately the SQL statement is on a system that has no connectivity so I can’t really post it.
Are you looking for a SQL Server solution or an Oracle solution? Please show the version of whichever it is (or both are).
ASKER
SQL please.
And what version? SQL Server 2012 has lead, lag, and first_values functions that would be most helpful in finding a solution for your requirement.
ASKER
2008 10.50.400
To me it looks like same example of who is manager of employee.
Please let us know if you are looking something like this
http://docs.oracle.com/cd/B28359_01/server.111/b28286/queries003.htm
Please let us know if you are looking something like this
http://docs.oracle.com/cd/B28359_01/server.111/b28286/queries003.htm
So you are saying that there can be multiple 19624 items? How will you ever know that you need 19624-4 and not 19624-1, 19624-2, or 19624-3?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
great answer thanks, better than my solution.
So you are saying that there can be multiple 19624 items? How will you ever know that you need 19624-4 and not 19624-1, 19624-2, or 19624-3?
You really need a way to have unique values associated with each one even if you build a bridge table and use it in the joins of your query.