Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8386701
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 9, 20262026-06-09T18:00:57+00:00 2026-06-09T18:00:57+00:00

Using SQL Server 2008, I would like to specify the column names of an

  • 0

Using SQL Server 2008, I would like to specify the column names of an inner join using dynamic SQL. The two tables I am joining have the same names for the columns I am joining on. I know SQL Server does not support natural joins; if it did, the dynamic SQL would look like something like this:

DECLARE @join_columns   AS NVARCHAR(100)
DECLARE @sql_1          AS NVARCHAR(4000)

SET @join_columns = 'Age, Gender' 

SET @sql_1 = '
    SELECT ' + @join_columns + ', table_1.Field_x , table_2.Field_y
    FROM table_1 , table_2
    NATURAL JOIN ON ' + @join_columns

EXECUTE sp_executesql @sql_1

Now, I realize this won’t work because there are no natural joins in SQL Server. So, what is the next best way to do this?

Here are a few things I unsuccessfully pursued:

  • Tokenizing @join_columns and forming up a dynamic WHERE table_1.<col_1> = table_2.<col_1> [AND...] kind of clause. But, it doesn’t look like T-SQL has string tokenization functions.

  • Using dynamic SQL to make temp tables, each with a new key column called temp_key that is the concatenation of the fields in @join_column. If it were easy to dynamically concatenate these, then the final join could be always be ON #temp_table_1.temp_key = #temp_table_2.temp_key. One way of setting this up would be to use the REPLACE function to replace the commas in @join_column with plus signs. The problem I ran into here was that the concatenation required casting for the non-VARCHAR columns. So, I’d have to know column types ahead of time – back to square one.

Ideally, I’d like to keep @join_columns as a comma-delimited string, because I am using it elsewhere in dynamic SQL GROUP BY clauses.

It may be that one of the failed approaches above could work, using something I missed. Or, maybe there’s a better overall approach.

Any suggestions?

Update

Solution was a combination of both @usr and @Karl’s posts below. I used @usr’s suggestion to track down a tokenizing table-valued UDF (ended up going with this one ). Then I used @Karl’s COALESCE example to turn the resulting table into the WHERE clause. I also used @Karl’s full example for another join problem I just ran into. I wish I could give answer status to both posters – thanks guys!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-09T18:00:58+00:00Added an answer on June 9, 2026 at 6:00 pm

    I find that this works well:

    declare @whereClause varchar(8000)
    declare @table2 varchar(255)
    declare @table1 varchar(255)
    
    set @table1='SomeTable'
    set @table2 = 'SomeOtherTable'
    
    SELECT  COLUMN_NAME as [joincolumn]
    into    #join_columns
    FROM    INFORMATION_SCHEMA.COLUMNS
    WHERE   TABLE_NAME = @table1
    AND COLUMN_NAME not in ('list names of columns that are not to be joined on here')
    
    select @whereClause=coalesce(@whereClause+' and ','')+ 
    '['+@table2+'].'+joincolumn+'=['+@table1+'].'+joincolumn +'
    '
    from #join_columns
    
    print @whereClause
    

    You can then create a dynamic SQL script and tag the WHERE clause to the back of it

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm using SQL Server 2008. I have two tables like this: OrderItems OrderItemID InventoryItemID
I'm using SQL Server 2008 and I would like to use a sproc to
using sql server 2008 I would like to take a table that has 11
I am using SQL Server 2008, and would like to be able to take
I'm using MS SQL Server 2008, and I would like this: +------+--------+--------+------------+ | id
I'm using SQL Server 2008 and would like to know if there is a
We are currently using SQL Server 2008 Express Edition, but would like to upgrade
I'm using SQL Server 2008 and would like to have a user defined function
I am using SQL Server 2008. I would like to sort my result by
I am using SQL Server 2008 and I would like to know if there's

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.