August 20, 2014 at 7:28 am
Hi there,
I am trying to join two tables that visibly doesn't have any thing unique as they come from separate systems. I believe I have a solution but am not sure how to write the TSQL to achieve what I'm after.
Database 1
We have a "Unique Transaction ID".
Examples being -
1. 4461
2. 14130
3. 23891
Database 2
When these transactions are imported into another system these change to the following -
1. CP000000004461
2. CP000000014130
3. CP000000023891
So I need to find a way in my first table to make 4461 to CP000000004461 and 23891 to CP000000023891, so that I can use that as a unique link to link to the second table.
It's the leading zeroes I'm having issues with but the length will always be 14.
August 20, 2014 at 7:37 am
How about something like this?
declare @x table (TransId varchar(10))
insert @x
(TransId)
values ('4461'),
('14130')
select TransId
,'CP' + right('000000000000' + TransId, 12)
from @x x
The absence of evidence is not evidence of absence
- Martin Rees
The absence of consumable DDL, sample data and desired results is, however, evidence of the absence of my response
- Phil Parkin
August 20, 2014 at 10:25 pm
Quick thought, this can easily be stuffed
😎
;WITH BASE_ID AS
( SELECT BID FROM
(VALUES (4461),(14130),(23891)) AS X(BID)
)
SELECT
BI.BID
,STUFF('CP000000000000'
,14 - LEN(CAST(BI.BID AS VARCHAR(12)))
,LEN(CAST(BI.BID AS VARCHAR(12)))
,CAST(BI.BID AS VARCHAR(12))
) AS UNIQUE_LINK
FROM BASE_ID BI
Results
BID UNIQUE_LINK
----------- ---------------
4461 CP000000044610
14130 CP000000141300
23891 CP000000238910
August 21, 2014 at 8:24 am
Recently I have faced this kind of situation in my organization. Temp table and with cte is the best option in my opinion when there is no relation between the tables or unique values.
August 21, 2014 at 9:28 am
Thanks guys for the help so far.
I've discovered that what I thought was a potential link actually isn't so after all your advice it's not going to help me in this scenario.
That being said I think I have found another potential to link my two data sets together.
Example I table 1 we have "708698"
In table 2 we have "Internet Card Payment Auth Code: 708698"
Is there anyway in SQL that you could say join 708698 to Internet Card Payment Auth Code: 708698 by looking in the table 2 field to match the 708698?
August 21, 2014 at 9:49 am
Ryan Keast (8/21/2014)
Thanks guys for the help so far.I've discovered that what I thought was a potential link actually isn't so after all your advice it's not going to help me in this scenario.
That being said I think I have found another potential to link my two data sets together.
Example I table 1 we have "708698"
In table 2 we have "Internet Card Payment Auth Code: 708698"
Is there anyway in SQL that you could say join 708698 to Internet Card Payment Auth Code: 708698 by looking in the table 2 field to match the 708698?
Is all the data in the column you wish to join to like this: Internet Card Payment Auth Code: nnnnnn where nnnnnn is the value to be joined?
If yes, can you add a persisted computed column to table 2 that extracts the Internet Card Payment Auth Code: ? If so, you could then index the persisted column and join to it.
Viewing 6 posts - 1 through 5 (of 5 total)
You must be logged in to reply to this topic. Login to reply