es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , , ,

Answer

  1. Avatar for 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 columna BillingDateTo, podemos utilizar la función SUBSTRING para extraer los caracteres requeridos y luego concatenarlos.

    La fórmula para BillingDealerPeriodID sería la siguiente:

    BillingDealerPeriodID = SUBSTRING(CONVERT(varchar(10), BillingDateTo, 105), 7, 2) + SUBSTRING(CONVERT(varchar(10), BillingDateTo, 105), 4, 2)
    

    En esta fórmula, primero convertimos la columna BillingDateTo a una cadena en el formato dd-MM-yyyy utilizando la función CONVERT con el estilo 105. Luego utilizamos la función SUBSTRING 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 de BillingDealerPeriodID.

    Esta fórmula se puede utilizar en una columna calculada agregando el siguiente SQL a la definición de la tabla:

    ALTER TABLE NombreTabla ADD BillingDealerPeriodID AS (SUBSTRING(CONVERT(varchar(10), BillingDateTo, 105), 7, 2) + SUBSTRING(CONVERT(varchar(10), BillingDateTo, 105), 4, 2))
    

    Esto creará una nueva columna denominada BillingDealerPeriodID en la tabla NombreTabla que se calcula dinámicamente en función de la columna BillingDateTo.

Comments are closed.