Динамический запрос с использованием information_schema.columns - PullRequest
0 голосов
/ 23 сентября 2019

Я хотел бы создать динамический запрос, который использует представление information_schema.columns для удаления дубликатов в таблице.TableName будет предоставлено действием фабрики данных позже.Есть идеи?Столбцы, используемые для создания чего-то, что должно быть уникальным, - это столбцы перед столбцом «selectedColumn» (упорядоченным по ordinal_position).

Я представляю, что запрос выглядит примерно так, чтобы дать идею.Но, как вы определенно понимаете, увидев это, я новичок в использовании information_schema, как это!

WITH cte AS (
    SELECT 
        *
        ,ROW_NUMBER() OVER (
            PARTITION BY 
            (SELECT COLUMN_NAME FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE 
            TABLE_SCHEMA = 'schemaName' AND 
            TABLE_NAME = 'tableName' AND
            ORDINAL_POSITION <= (SELECT ORDINAL_POSITION FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE 
                                TABLE_SCHEMA = 'schemaName' AND 
                                TABLE_NAME = 'tableName' AND column_name = 'specifiedColumn')
            )
            ORDER BY 
            (SELECT COLUMN_NAME FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE 
            TABLE_SCHEMA = 'schemaName' AND 
            TABLE_NAME = 'tableName' AND
            ORDINAL_POSITION <= (SELECT ORDINAL_POSITION FROM [INFORMATION_SCHEMA].[COLUMNS] WHERE 
                                TABLE_SCHEMA = 'schemaName' AND 
                                TABLE_NAME = 'tableName' AND column_name = 'specifiedColumn')
            )
        ) row_num
     FROM 
        [schemaName].[tableName]
)
DELETE FROM CTE 
WHERE row_num > 1;

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...