Cómo seleccionar un valor en una tabla según el rango de fechas que puede cambiar

stzvggmd

Parece que no puedo encontrar una pregunta que aborde específicamente los requisitos de lo que estoy tratando de hacer aquí, pero me disculpo si este no es el caso.

Tengo una tabla de ejemplo:

    type|start_date|end_date  |cost|

    bananas|2019-01-01|2019-01-31|100
    bananas|2019-02-01|2019-02-28|95
    juice  |null      |null      |55

Y así. El punto de la tabla es que la 'comida' o cualquier otra cosa, puede tener un precio diferente en función de un rango de tiempo diferente, sin embargo, hay algunos elementos, como el jugo, que no se ven afectados cuando cambia la fecha (es decir, se mantienen constantes ).

En otra tabla, quiero buscar un valor basado en el rango de fechas en la tabla anterior.

Por ejemplo:

customerId|transaction_date|item   |quantity|

abc123    |2019-01-25      |bananas|4
abc126    |2019-02-06      |bananas|4
abc128    |2019-02-09      |juice  |1

Entonces, los dos primeros clientes compraron bananas, pero una en enero y otra en febrero. Luego, otro cliente compró jugo. ¿Cómo puedo devolver el costo correspondiente correcto basado en mi otra tabla?

He tratado de hacer donde la fecha son BETWEENlas dos, pero esto aliena cualquier otra fecha que no existe en la tabla de precios. También he intentado utilizar CASEpara abordar esto, pero fue en vano.

¿Cuál sería el mejor enfoque para esto?

Esperaría que el resultado arrojara una tabla unida con lo siguiente:

customerId|transaction_date|item   |quantity|cost|

abc123    |2019-01-25      |bananas|4       |100
abc126    |2019-02-06      |bananas|4       |95
abc128    |2019-02-09      |juice  |1       |55

¿Dónde costse une la columna a los criterios anteriores?

Mate

Puede usar ISNULL en la combinación izquierda.

SELECT P.*, C.cost
FROM Purchases P 
LEFT JOIN Product_Costs C ON P.item = C.type 
      AND P.transaction_date >= ISNULL(C.start_date, P.transaction_date) 
      AND P.transaction_date <= ISNULL(C.end_date, P.transaction_date);

Violín de Nick modificado: http://sqlfiddle.com/#!18/e366b/6

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

¿Cómo puedo asignar un valor a una tabla de Excel según el rango de fechas en otra tabla de Excel?

Los pandas obtienen un valor de una tabla según el rango de fechas en otra tabla

¿Cómo obtener un valor específico en una tabla según el rango de valores en MySQL?

¿Cómo puede cambiar el valor de un puntero de cadena que se pasa a una función en C++?

¿Cómo seleccionar fechas donde algunas fechas de rango están en un rango dado?

Cómo fusionar dos marcos de datos según el valor de rango de una tabla

Mostrar registros que no están presentes en una tabla y un rango de fechas determinado

¿Cómo puedo extraer todas las filas de una tabla donde al menos un día entre un rango de fechas de dos columnas se encuentra entre el rango de fechas en una segmentación?

¿Cómo puedo extraer todas las filas de una tabla donde al menos un día entre un rango de fechas de dos columnas se encuentra entre el rango de fechas en una segmentación?

¿Cómo verifico que el valor de una fecha se encuentre dentro de un rango de fechas el mes pasado?

¿Cómo obtener los identificadores de una tabla según el valor de un campo de referencia que no existe en otra tabla?

Complete las fechas que faltan en el rango de fechas de una tabla

Complete las fechas que faltan en el rango de fechas de una tabla

No se puede actualizar la fecha en un selector de fechas según el valor de una lista desplegable

¿Cómo cambiar una de las marcas de tiempo en el rango de fechas de pandas?

Tengo un valor de 'marcas' en una tabla dinámica, ¿cómo encontrar el rango de los estudiantes según el valor de las 'marcas' usando el generador de consultas?

Tengo un valor de 'marcas' en una tabla dinámica, ¿cómo encontrar el rango de los estudiantes según el valor de las 'marcas' usando el generador de consultas?

Cómo seleccionar un rango de fechas en awk

Cómo insertar varias filas en una tabla según un rango de números

Cambiar dinámicamente un selector de fechas según el valor seleccionado en un menú desplegable

Cómo seleccionar datos de un rango de fechas basado en múltiples tablas y el nombre de la tabla (trimestral)

¿Cómo cambiar el color de una celda de tabla HTML (creada dinámicamente) en función de un valor?

Cómo seleccionar solo filas de una tabla un valor de clumns es más que el valor de recuento de tablas b en MySQL

Cambiar el valor en un rango dada una condición

Cambiar el valor en un rango dada una condición

¿Cómo seleccionar el host en Ansible según el valor de una variable?

Cómo contar filas usando un rango de fechas variable proporcionado por una tabla en PostgreSQL

Cómo cambiar el estilo CSS y el enlace de una celda de tabla anterior según el valor de celda actual en jQuery

¿Cómo se puede generar una lista de fechas a partir de un rango en Amazon Redshift?

TOP Lista

  1. 1

    ¿Cómo ocultar la aplicación web de los robots de búsqueda? (ASP.NET)

  2. 2

    Pandas의 CSV 파일을 Pandas 데이터 프레임으로 가져 오기

  3. 3

    uitableview delete button image in iOS

  4. 4

    Manera correcta de agregar referencias al proyecto C # de modo que sean compatibles con el control de versiones

  5. 5

    Swift / Firebase : Facebook 사용자가 계정을 만들 때 Firebase 데이터베이스에 제대로 저장하려면 어떻게해야합니까?

  6. 6

    caída condicional de filas desde un marco de datos de pandas

  7. 7

    Link library in Visual Studio, why two different ways?

  8. 8

    Pagination class not getting applied in html

  9. 9

    Que signifie Decimal (-1)?

  10. 10

    UIButton textLabel with different fonts

  11. 11

    WPF pleine largeur DataGridColumn sur la largeur de DataGrid

  12. 12

    Opción de máquina virtual no reconocida 'MaxPermSize = 512m' cuando se ejecuta Zeppelin

  13. 13

    matplotlib로 그래프를 그리는 동안 커서 위치에서 날짜 / 시간을 볼 수 없습니다. "DateFormatter에서 x = 0 값을 찾았습니다"라는 오류가 발생합니다.

  14. 14

    ¿Es posible en Windows evitar que otras aplicaciones se enganchen en las DLL del sistema?

  15. 15

    Error de la base de datos de Android Firebase: Permiso denegado al depurar en un teléfono

  16. 16

    Pandas: suma filas de DataFrame para columnas dadas

  17. 17

    ggplot2: gráfico con líneas y puntos para problemas de leyenda de dos conjuntos de datos

  18. 18

    ¿Cómo especificar el puerto en el que se aloja una aplicación ASP.NET Core?

  19. 19

    Recherche de la position d'index d'une valeur dans r dataframe

  20. 20

    GPU를 사용하여 ffmpeg 필터의 처리 속도를 가속화하는 방법은 무엇입니까?

  21. 21

    nested observables executed one after the other after termination

CalienteEtiquetas

Archivo