2つのテーブルがありますテーブル1の行の値とテーブル2のカラムの名前を比較し、一致する場合はテーブルを更新する必要があります2行の値は、表1の行の値と一致する列名に対してtrue
と表示されます。一致しない場合は、false
で更新する必要があります。テーブルの行の値と別のテーブルの列の値とを比較し、trueまたはfalseと答えた場合
いずれのポインタも高く評価されています。
あなたはカラム名を取得するためにINFORMATION_SCHEMAビューを使用することができます2つのテーブルがありますテーブル1の行の値とテーブル2のカラムの名前を比較し、一致する場合はテーブルを更新する必要があります2行の値は、表1の行の値と一致する列名に対してtrue
と表示されます。一致しない場合は、false
で更新する必要があります。テーブルの行の値と別のテーブルの列の値とを比較し、trueまたはfalseと答えた場合
いずれのポインタも高く評価されています。
あなたはカラム名を取得するためにINFORMATION_SCHEMAビューを使用することができます:
CREATE TABLE ##temp (
column_name nvarchar(max),
[flag] int
)
INSERT INTO ##temp
SELECT COLUMN_NAME, 0
FROM YourDB.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YOURTableName'
UPDATE t
SET [flag] = CASE WHEN a.ColumnToCheck IS NULL THEN 0 ELSE 1 END
FROM ##temp t
LEFT JOIN anotherTable a
ON t.column_name = a.ColumnToCheck
その後、あなたのテーブルと更新に参加し、その後、ピボット:
DECLARE @columns nvarchar(max), @query nvarchar(max)
SELECT @columns =STUFF((
SELECT ','+column_names FROM ##temp FOR XML PATH('')),1,1,'')
SELECT @query='
SELECT *
FROM ##temp
PIVOT (
MAX([flag]) for column_name in ('[email protected]+'
) as pvt'
EXEC sp_executesql @query
ベターはなく、自動的にすべての列名を追加するには、動的SQLを使用します手作業で割り当てる。
おそらく
UPDATE TABLE2
SET FLAG_Column = 'TRUE'
WHERE NAME_Column IN (
Select c.name FROM sys.columns c JOIN sys.objects o ON
c.object_id = o.object_id
WHERE o.name = 'TABLE1')