0

1 つのクエリが別のクエリで使用されるパラメーターを保持する 2 つのクエリがあります。私は似たようなことをしましたが、複数のパラメーターを使用していません。クエリは次のとおりです。

SELECT [loadJob]
      ,[loadStep]
      ,[parameter]
      ,[value]
  FROM [Admin].[admin].[LoadParameters] where loadJob like 'someJobName%' and (parameter = 'targetDatabaseName' or parameter = 'targetDatasetName' or parameter = 'targetDatasetSchema')

SELECT 
      TABLE_CATALOG as DB,
      TABLE_SCHEMA,
      TABLE_NAME,
      COLUMN_NAME,
      ORDINAL_POSITION,
      COLUMN_DEFAULT,
      IS_NULLABLE,
      DATA_TYPE,
      CHARACTER_MAXIMUM_LENGTH,      
      NUMERIC_PRECISION,
      NUMERIC_PRECISION_RADIX,
      NUMERIC_SCALE,
      DATETIME_PRECISION,      
      CHARACTER_SET_NAME
FROM 
INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'TheDataBase' // From the [parameter] with name 'targetDatabaseName' get form the [value] column
AND TABLE_SCHEMA = 'data' // From the [parameter] with name 'targetDatasetSchema' get form the [value] column
AND TABLE_NAME = 'TableName'  // From the [parameter] with name 'targetDatasetName' get form the [value] column

したがって、最初のクエリの結果が次の場合:

[parameter]           [value]

targetDatabaseName    SomeDataBaseName

targetDatasetSchema   data

targetDatasetName     TheTableName

2 番目のクエリの where 句は、次のようにこれらのパラメーターを使用します。

FROM 
INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'SomeDataBaseName'
AND TABLE_SCHEMA = 'data'
AND TABLE_NAME = 'TheTableName'

すべてをテーブル名でグループ化して、CSV にエクスポートできるようにしたいと考えています。私はいくつかのことを試しましたが、私が誇りに思っていることは何もうまくいきません.

4

1 に答える 1

0

データベースが本当に必要ない場合は、次のようなものを使用できます。

with FirstQuery as (
    select max(case when parameter = 'TargetDatabaseName' then value end) as DB,
           max(case when parameter = 'TargetDatasetSchema' then value end) as Schema,
           max(case when parameter = 'TargetDataSetName' then value end) as table
    from (<first query goes here>) t
)
selelect <whatever>
from Information_Schema q2 join
     FirstQuery q1
     on q1.Table_Schema = q2.Schema and
        q1.Table_Name = q2.table

私が見ている問題はデータベースです。SQL Server では、Information_Schema テーブルには 1 つのデータベースに関する情報のみが含まれます。一度に複数のデータベースを取得するには、動的 SQL を使用する必要がある場合があります。

于 2012-09-05T18:17:49.500 に答える