El problema interesante de la pregunta… miente con imaginar cómo emparejar el código más específico al número. Mi mecanismo utiliza la longitud del prefijo del código de área para ayudar a imaginar el más apropiado. Observar que acabo de tomar sus datos suministrados y rápidamente los he hecho alguÌn CTEs fuera de él. Apenas para demostrarle cómo el SELECTO trabajaría…
CON CalledNumbers COMO (
SELECCIONAR “98798798797” COMO cuenta
UNIÓN “19123123123 SELECTOS” --He cambiado este valor de su poste original
UNIÓN “13123123123 SELECTOS”
UNIÓN “12423123127 SELECTOS”
), AreaCodes COMO (
SELECCIONAR “12” COMO prefijo, “agrupan” COMO GroupName
UNIÓN “98 SELECTOS”, “grupo B”
La UNIÓN “1 SELECTO”, “agrupa A”
UNIÓN “131 SELECTOS”, “grupo 5”
UNIÓN “124 SELECTOS”, “grupo 4”
)
SELECCIONAR CalledNumbers.*, AreaCodes.*
De CalledNumbers
EXTERNOS IZQUIERDOS ENSAMBLAN AreaCodes EN CalledNumbers.Account COMO AreaCodes.Prefix + “%”
DONDE LEN (AreaCodes.Prefix) = (SELECCIONAR max (LEN (prefijo)) De AreaCodes DONDE CalledNumbers.Account TIENEN GUSTO AreaCodes.Prefix + “%")
Y para hacer su actualización como sea necesario:
ACTUALIZACIÓN CalledNumbers DETERMINADO CalledNumbers.GroupName = AreaCodes.GroupName DE
CalledNumbers
EXTERNOS IZQUIERDOS ENSAMBLAN AreaCodes EN CalledNumbers.Account COMO AreaCodes.Prefix + “%”
DONDE LEN (AreaCodes.Prefix) = (SELECCIONAR max (LEN (prefijo)) De AreaCodes DONDE CalledNumbers.Account TIENEN GUSTO AreaCodes.Prefix + “%")