Mostrar valores de listagg basados en valores en otra columna (parte 2)

Hassan

Publiqué una pregunta similar anteriormente aquí: Mostrar valores LISTAGG en una celda según el valor de otra columna .

En esa pregunta, estaba usando ACTUALIZAR para almacenar una lista delimitada por comas.

Obtuve una solución para eso, pero gracias a los colaboradores me di cuenta de que esta no es la mejor manera de hacerlo.

Estoy usando Oracle APEX y necesito mostrar estos datos en una tabla.

ID   Schedule     Days
001  Weekend      Saturday, Sunday

Tengo 3 mesas para trabajar. Son, para simplificar, DAYS, SCHEDULES y DAY_SCHEDULES.

DAYS table
Day_ID - PK
Day_Order
Day_Name
Schedule (I added this column myself, the others were already provided)

SCHEDULES table
Schedule_ID - PK
Schedule (only two possible values: 'Weekend' or 'Weekday')
Days
Several other columns but not relevant

DAY_SCHEDULES table
Day_schedules_id - PK
Schedule_ID - FK
Day_ID - FK

He intentado varias formas de hacer que la columna Días muestre una lista de los días correspondientes, pero ninguna parece funcionar. Mis principales intentos han sido jugar con las declaraciones SELECT / CASE, pero aún no mostrará nada incluso cuando la sintaxis sea correcta.

No puedo hacer un FK entre las dos tablas ya que ninguna de las columnas de Horarios es única.

No estoy seguro de qué probar a continuación, por lo que se agradece cualquier ayuda o consejo.

Gracias,

Hassan

MT0

Creo que esto es lo que está tratando de lograr (no necesita la DAYScolumna en la tabla de programación, ya que puede calcularla a partir de la tabla de días):

Violín SQL

Configuración del esquema de Oracle 11g R2 :

CREATE TABLE DAYS ( Day_ID, Day_Order, Day_Name, Schedule ) AS
SELECT LEVEL,
       LEVEL - 1,
       TO_CHAR(
         TRUNC( SYSDATE, 'IW' ) + LEVEL - 1,
         'FMDay',
         'NLS_LANGUAGE=ENGLISH'
       ),
       CASE
       WHEN LEVEL <= 5
       THEN 'Weekday'
       ELSE 'Weekend'
       END
FROM   DUAL
CONNECT BY LEVEL <= 7;

CREATE TABLE SCHEDULES ( Schedule_ID, Schedule, Other ) AS
SELECT 1, 'Weekend', 'ABC' FROM DUAL UNION ALL
SELECT 2, 'Weekday', 'DEF' FROM DUAL;

Consulta 1 :

SELECT s.*,
       d.days
FROM   schedules s
       INNER JOIN
       ( SELECT schedule,
                LISTAGG( day_name, ', ' )
                  WITHIN GROUP ( ORDER BY day_order ) AS days
         FROM   days
         GROUP BY schedule ) d
       ON ( s.schedule = d.schedule )

Resultados :

| SCHEDULE_ID | SCHEDULE | OTHER |                                         DAYS |
|-------------|----------|-------|----------------------------------------------|
|           2 |  Weekday |   DEF | Monday, Tuesday, Wednesday, Thursday, Friday |
|           1 |  Weekend |   ABC |                             Saturday, Sunday |

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Obtener valores de columna basados en cambios en otra columna

Obtener valores de columna basados en cambios en otra columna

Asignación de valores basados en parte de la columna

Asignación de valores basados en parte de la columna

Sumar valores únicos basados en otra columna

Obtener valores basados en otra columna

Obtener valores basados en el máximo de otra columna

Pandas, resta valores basados en el valor de otra columna

Agregar valores de una columna basados en valores en otra columna en pandas

Obtenga valores distintos de una columna basados en valores distintos en otra columna usando R

Agregar nueva columna con valores basados en condiciones en valores de otra columna

Actualizar valores de columna basados en valores iguales en otra columna

restar valores en una columna basados en otra columna

Mutar valores en una columna basados en otra columna

Copiar los valores de una columna, basados en los valores de otra columna

R: ¿Cómo crear una nueva columna con valores basados en ciertos valores de otra columna?

Valores de Python Shift en una columna basados en Nan o booleanos en otra columna

SQL SELECT: nueva columna con valores basados en otra columna

Valores promedio de una columna basados en los valores de otra

Dividir valores de columna basados en delimitadores y coincidencias con otra columna en postgres

Repetir valores en una columna basados en otra

Repetir valores en una columna basados en otra

Filtrar valores basados en otra columna en SQL

Cree una nueva columna con valores vectoriales basados en grupos de otra columna de caracteres

Oracle SQL: obtenga el recuento de valores de columna distintos basados en otra columna

Establecer valores de columna basados en la búsqueda de otra columna

Crea grupos basados en valores de columna

Sumar valores de una columna basados en otra columna booleana, tanto verdaderos como falsos por separado

Encuentre los valores mínimos de la columna df basados en otra columna