Crear una cadena en una columna SQL calculada a partir de caracteres específicos de otra columna.
No sé si esto es posible, pero me gustaría llenar una columna basada en una columna adyacente en una tabla de SQL Server.
Como se muestra a continuación, nos gustaría determinar dinámicamente el “BillingDealerPeriodID” utilizando el sexto, séptimo y tercer y cuarto dígitos de “BillingDateTo”.
No estoy seguro si importa, pero “BillingDateTo” también es una columna calculada basada en otra columna “BillingDateFrom”, que es 7 días después de “BillingDateFrom”.
La fórmula para la columna calculada “BillingDateTo” es:
(dateadd(día, (7), [BillingDateFrom]))
Si el resultado tuviera que ser 2102 o 2103 en lugar de 0221 y 0321, eso también estaría bien.
BillingDateTo BillingDealerPeriodID 2021-02-28 00:00:00.000 0221 2021-03-07 00:00:00.000 0321
davy.ai
Sí, es posible completar una columna basada en una columna adyacente en una tabla de SQL Server utilizando concatenación de cadenas y columnas calculadas.
Para determinar dinámicamente el
BillingDealerPeriodID
basado en la columnaBillingDateTo
, podemos utilizar la funciónSUBSTRING
para extraer los caracteres requeridos y luego concatenarlos.La fórmula para
BillingDealerPeriodID
sería la siguiente:En esta fórmula, primero convertimos la columna
BillingDateTo
a una cadena en el formatodd-MM-yyyy
utilizando la funciónCONVERT
con el estilo105
. Luego utilizamos la funciónSUBSTRING
para extraer los caracteres 7 y 8 (es decir,MM
) y los caracteres 4 y 5 (es decir,yy
) de esta cadena, respectivamente. Finalmente, concatenamos las subcadenas extraídas para formar el valor deBillingDealerPeriodID
.Esta fórmula se puede utilizar en una columna calculada agregando el siguiente SQL a la definición de la tabla:
Esto creará una nueva columna denominada
BillingDealerPeriodID
en la tablaNombreTabla
que se calcula dinámicamente en función de la columnaBillingDateTo
.