February 18, 2014 at 3:27 am
I have three tables as follows
TableA
------
Col1 col2 col3
1 C01 1
2 C02 2
3 C03 1
4 C04 2
5 C05 3
6 C06 1
TableB(here col2 references to col3 from TableA)
------
ID Col1 col2 displayorder
1 1 1 2
2 1 2 3
3 1 3 1
TableC(here col2 refers to col1 from TableB and col3 refers to col1 from tableA)
------
Col1 col2 col3
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 6 6
Based on the three tables i need to generate output from TableA as follows
5 c05
6 c06
3 C03
1 C01
4 C04
2 C02
can anyone help me on this
February 18, 2014 at 4:57 am
A simple query exactly described generates this dataset:
Col1col2col3#IDCol1col2displayorder#Col1col2col3
5C053#3131#515
6C061#1112#NULLNULLNULL
1C011#1112#111
3C031#1112#313
4C042#2123#414
2C022#2123#212
Here's a sample data script and a query constructed from your notes:
DROP TABLE #TableA
CREATE TABLE #TableA (Col1 INT, col2 VARCHAR(3), col3 INT)
INSERT INTO #TableA VALUES
(1, 'C01', 1),
(2, 'C02', 2),
(3, 'C03', 1),
(4, 'C04', 2),
(5, 'C05', 3),
(6, 'C06', 1)
CREATE TABLE #TableB (ID INT, Col1 INT, col2 INT, displayorder INT)
INSERT INTO #TableB VALUES
(1, 1, 1, 2),
(2, 1, 2, 3),
(3, 1, 3, 1)
-- (here col2 refers to col1 from TableB and col3 refers to col1 from tableA)
DROP TABLE #TableC
CREATE TABLE #TableC (Col1 INT, col2 INT, col3 INT)
INSERT INTO #TableC VALUES
(1, 1, 1),
(2, 1, 2),
(3, 1, 3),
(4, 1, 4),
(5, 1, 5),
(6, 6, 6)
-- simple query
SELECT a.*, '#' '#', b.*, '#' '#', c.*
FROM #TableA a
left JOIN #TableB b ON b.col2 = a.col3
left JOIN #TableC c ON c.col2 = b.col1 AND c.col3 = a.col1
ORDER BY b.displayorder
You will have to provide more information. How is the output order defined? How is the row with value 'C04' eliminated?
Edit: missed TableA.
For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden
February 18, 2014 at 5:56 am
that's my typo C04 shoould be included
the output should be
5 c05
6 c06
3 C03
1 C01
4 C04
2 C02
not
5 c05
6 c06
1 c01
3 c03
4 c04
2 c02
February 18, 2014 at 6:13 am
Why?
For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden
February 18, 2014 at 6:21 am
This will do it, but it's somewhat arbitrary:
ORDER BY b.displayorder, ISNULL(c.col1,2147483647) DESC
For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden
February 18, 2014 at 6:52 am
kalikoi (2/18/2014)
I have three tables as followsTableA
------
Col1 col2 col3
1 C01 1
2 C02 2
3 C03 1
4 C04 2
5 C05 3
6 C06 1
TableB(here col2 references to col3 from TableA)
------
ID Col1 col2 displayorder
1 1 1 2
2 1 2 3
3 1 3 1
TableC(here col2 refers to col1 from TableB and col3 refers to col1 from tableA)
------
Col1 col2 col3
1 1 1
2 1 2
3 1 3
4 1 4
5 1 5
6 6 6
Based on the three tables i need to generate output from TableA as follows
5 c05
6 c06
3 C03
1 C01
4 C04
2 C02
can anyone help me on this
Chris is a generous man but he's not always available. Please see the first link under "Helpful Links" in my signature line below for the best way to post your data in the future. Thanks.
--Jeff Moden
Change is inevitable... Change for the better is not.
Viewing 6 posts - 1 through 5 (of 5 total)
You must be logged in to reply to this topic. Login to reply