SQL Server: ¿Cómo puedo fusionar con una columna dinámica? -- tsql campo con sql-server-2016 camp Relacionados El problema

SQL Server : how can I MERGE with a dynamic column?


0
vote

problema

Español

En SQL Server 2016, tengo una declaración de combinación de que se parece a esto:

  MERGE dbo.MyTable AS TARGET  USING (SELECT * FROM dbo.StageTable)  WHEN MATCHED     THEN        UPDATE SET target.[StartTime] = source.[UnknownColumn]   

MI source La tabla contiene columnas en un orden generado al azar. En otras palabras, la columna "Tiempo de inicio" en la tabla target podría ser igual a la columna1 o la columna2 o la columna3, pero siempre contendrá las palabras "Tiempo de inicio" en algún lugar de la columna.

¿Cómo puedo configurar la columna de destino igual a la columna correcta, cuando no conozco la posición de la columna correcta en la tabla de origen? Lo único que sé de la columna correcta es que contiene una cadena específica ...

Original en ingles

In SQL Server 2016, I have a merge statement that looks like this:

MERGE dbo.MyTable AS TARGET  USING (SELECT * FROM dbo.StageTable)  WHEN MATCHED     THEN        UPDATE SET target.[StartTime] = source.[UnknownColumn] 

My source table contains columns in randomly generated order. In other words, the "StartTime" column in the target table could be equal to Column1 or Column2 or Column3 etc., but it will always contain the words "StartTime" somewhere in the column.

How can I set the target column equal to the correct column, when I don't know the correct column's position in the source table? The only thing I know about the correct column is that is that it contains a specific string...

     
 
 

Lista de respuestas

0
 
vote

Necesitas usar la Dinámica Dinámica T-SQL. Algo así:

  DECLARE @DynamicTSQLStatement NVARCHAR(MAX)        ,@ColumnName SYSNAME;  SELECT @ColumnName = [name] FROM [sys].[columns] WHERE [object_id] = OBJECT_ID('[dbo].[StackOverflow]')     AND [name] LIKE '%StartTime%';   SET @DynamicTSQLStatement = N'MERGE dbo.MyTable AS TARGET  USING (SELECT * FROM dbo.StageTable)  WHEN MATCHED     THEN        UPDATE SET target.[StartTime] = source.[' + @ColumnName + '];';  EXEC sp_executesql @DynamicTSQLStatement;   
 

You need to use dynamic T-SQL statement. Something like this:

DECLARE @DynamicTSQLStatement NVARCHAR(MAX)        ,@ColumnName SYSNAME;  SELECT @ColumnName = [name] FROM [sys].[columns] WHERE [object_id] = OBJECT_ID('[dbo].[StackOverflow]')     AND [name] LIKE '%StartTime%';   SET @DynamicTSQLStatement = N'MERGE dbo.MyTable AS TARGET  USING (SELECT * FROM dbo.StageTable)  WHEN MATCHED     THEN        UPDATE SET target.[StartTime] = source.[' + @ColumnName + '];';  EXEC sp_executesql @DynamicTSQLStatement; 
 
 

Relacionados problema

3  SQL QUERY para dar una suma de un valor de datos y el número de veces que está por encima de 60  ( Sql query to give a summation of a data value and count number of times it is ab ) 
Estoy intentando consultar los siguientes datos. Por cada período de tiempo, desde la columna PrcTBUSY, estoy deseando el MAX, MIN, AVG, TOTAL CUENTO y el rec...

0  Azure SQL Legacy Cardinality Estimación no funciona como SQL Server 2016  ( Azure sql legacy cardinality estimation not working like sql server 2016 ) 
Tenemos dos bases de datos idénticas (exactamente los mismos datos, estructura, etc.) uno en Azure SQL (Premium 500 DTU) y el otro en una VM en Azure ejecutan...

8  Cómo detectar el tiempo de espera del servidor SQL desde la aplicación .NET sin usar la excepción de captura  ( How to detect sql server timeout from net application without using catch excep ) 
En mi aplicación actual, estoy realizando una actualización invocando el comando T-SQL Update. El problema es cuando el mismo registro está bloqueado por otro...

1  No puedo encontrar el trabajo de administración de TFSVersionControl  ( Cant find tfsversioncontrol administration job ) 
estoy usando la actualización 3 de TFS 2017; Quiero reducir mi tamaño de base de datos de TFS; Así que quiero limpiarlo; No puedo encontrar el trabajo de admi...

2  SSIS OLEDB.12.0 Número en SQL Server2016 / Visual Studio 2015  ( Ssis oledb 12 0 issue on sql server2016 visual studio 2015 ) 
Me enfrento un problema sobre SSI para importar un archivo de Excel. funciona cuando uso un estudio visual 2015 para desarrollar y ejecutar SSIS con Acces...

2  Conecte Excel VBA a Microsoft Azure Data Warehouse  ( Connect excel vba to microsoft azure data warehouse ) 
¿Es posible conectarse a Azure Data Warehouse usando Excel VBA? Si es así, ¿podría alguien compartir la cadena de conexión que debe usarse? He estado usando...

0  Almacenar grandes matrices (listas) de datos en formato XML en SQL Server 2016  ( Store big arrays lists of data in xml format into sql server 2016 ) 
Necesito guardar el resultado de varias mediciones generadas en C #. Los resultados son grandes listas de datos de diferentes tipos: List<double, double> ...

1  Quiero consultar el contenido de la columna interior JSON como a continuación  ( I want to query the content of the json inside column like below ) 
Estoy ahorrando datos de JSON My SQL Server 2016 Tabla y quiero consultar la tabla aplicando donde la cláusula en el JSON como a continuación. select c.cus...

0  Error al intentar copiar datos de SQL Server  ( Error when trying to backup data from sql server ) 
Estoy obteniendo un error inquietante y continuo cuando estoy tratando de hacer una copia de seguridad en mi base de datos. He hecho la investigación sobre es...

5  Desinstalar SQL Server 2016  ( Uninstall sql server 2016 ) 
He logrado instalar SSMS 2016 en Windows 7, pero no funciona, por supuesto. He intentado desinstalar SQL Server 2016 usando el programa de instalación de SQ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos