2017-03-29 4 views
0

特定のデータベースの各テーブルをループして、各charフィールドに固有の値を取得したいとします。SQL Serverで各テーブルと各列から異なる値を取得

私のクエリのようなものがあります

for each table: 
    for each row in table: 
     select distinct char_field 
     from table 
    loop 
loop 

私はこれをどのように行うのですか?

+1

シナリオをよりよく理解し、問題の最適な解決方法を提供するために、データと必要な出力を追加します。 –

答えて

1

は、このプロセスは、データ型がcharが含まれているすべてのテーブルのすべての列でカーソルを開き、この

DECLARE cur CURSOR FOR 
    SELECT 'SELECT DISTINCT ' + QUOTENAME(c.COLUMN_NAME) + 'AS ' + QUOTENAME(TABLE_CATALOG + '.' + TABLE_SCHEMA + '.' + TABLE_NAME) + ' FROM ' + QUOTENAME(TABLE_CATALOG) + '.' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) 
    FROM INFORMATION_SCHEMA.COLUMNS AS c 
    WHERE c.DATA_TYPE LIKE '%char%' 

DECLARE @cmd VARCHAR(MAX); 
OPEN cur; 

FETCH NEXT FROM cur INTO @cmd; 
WHILE @@FETCH_STATUS = 0 
BEGIN 
    PRINT @cmd 
    EXEC(@cmd); 
    FETCH NEXT FROM cur INTO @cmd; 
END 

CLOSE cur; 
DEALLOCATE cur; 

ようにそれを試してみてください。すべての異なる値を選択するためのステートメントを作成し、これを実行します。

関連する問題