2016-11-30 10 views
1

私は、クエリのこの種を実行するための汎用的な方法が必要になります。ジェネリック選択連結テーブルからすべての列

select t.column1+t.column2+t.column3+....+t.column25 from myTable t; 

それでは、私が探していることは、このようなものになるだろう:

select concat(*) from myTable t; 

これを行う方法はありますか?

+1

あなたがこのタイプの多くのクエリを持っていない限り、動的なSQLを使用しない限り、手動ですべての列を書き込む方がいいです – TheGameiswar

+0

@TheGameiswar、はい私はループする必要があります方法?? – Billydan

+0

@チャヌクヤは必要ありません。 – Billydan

答えて

3
DECLARE @Names VARCHAR(8000) 
DECLARE @SQLQuery AS NVARCHAR(500) 
SELECT @Names = COALESCE(@Names + ', ', '') + name 
FROM sys.columns WHERE object_id = OBJECT_ID('tablename') 

SET @SQLQuery = 'SELECT CONCAT(' + @Names + ') FROM tablename ' 
EXECUTE(@SQLQuery) 
2

これを試してみてください:

DECLARE @TableName SYSNAME = 'dbo.MyTable' 

SELECT STUFF 
(
    (
     SELECT ', ' + [name] 
     FROM [sys].[columns] 
     WHERE [object_id] = OBJECT_ID(@TableName) 
     ORDER BY [column_id] 
     FOR XML PATH(''), TYPE 
    ).value('.', 'nvarchar(max)') 
    ,1 
    ,1 
    ,'' 
); 

それは彼らの作成順序に応じて、列を連結しています。ワイドテーブル(列が多いテーブル)は大丈夫です。

関連する問題