sql >> データベース >  >> RDS >> Sqlserver

別のテーブルの列名に基づいて、あるテーブルから列を選択する

    私の以前の答えは、mysql に対するものでした。それ以来、タグは質問で更新されているため、ここに sql-server-2008 のクエリがあります .

    table_levels の値から列のリストを作成します 、最後の を削除します 、table_results から結果を取得するためのクエリ文字列を作成します 、実行します。

    DECLARE @listStr varchar(MAX) =(selectselectColumnName + ',' from table_levels where level =1 for xml path(''))DECLARE @query varchar(MAX) ='SELECT ' + LEFT(@ listStr, LEN(@listStr)-1) + ' FROM table_results'execute(@query)  

    SQL サーバーのデモ

    前の回答。 mssql で動作します

    mysql のデモ を参照してください

    GROUP_CONCAT を使用 table_levels の値から文字列を作成する table_results から結果を取得するためのクエリ文字列を作成します。

    SET @listStr =( SELECT GROUP_CONCAT(selectColumnName) FROM table_levels where level =1);SET @query :=CONCAT('SELECT ', @listStr, ' FROM table_results'); PREPARE STMT FROM @query; EXECUTE STMT;  

    1. Uncaughtエラーを受信するforeachループを使用してクエリを挿入します:ブール値でメンバー関数execute()を呼び出します

    2. 別のdateTimeの質問

    3. Oracleでのページネーションのベストプラクティスは?

    4. 一度に固定数の結果でMySqlResultSetをストリーミング