Tengo una situación donde necesito tomar una "cantidad consumida" de una tabla, y aplicarla a una segunda tabla que tiene 1 o más filas que son "lotes agrupados" de cantidades . No estoy seguro de cómo describirlo mejor, esto es lo que quiero decir desde una perspectiva tabla:SQL - Restando un valor de agotamiento de las filas
Table Pooled_Lots
----------------------------
Id Pool Lot Quantity
1 1 1 5
2 1 2 10
3 1 3 4
4 2 1 7
5 3 1 1
6 3 2 5
Table Pool_Consumption
----------------------------
Id PoolId QuantityConsumed
1 1 17
2 2 8
3 3 10
Necesito un conjunto de filas resultante de una consulta SQL que se vería así:
Pool Lot Quantity QuantityConsumed RunningQuantity RemainingDemand SurplusOrDeficit
1 1 5 17 0 12 NULL
1 2 10 17 0 2 NULL
1 3 4 17 2 0 2
2 1 7 8 0 1 -1
3 1 1 10 0 9 NULL
3 2 5 10 0 4 -4
Por lo tanto, Pool_Consumption.QuantityConsumed debe ser un "valor de agotamiento" restado en las filas de Pooled_Lots donde Pool_Consumption.PoolId = Pooled_Lots.Pool. No puedo imaginar cómo le indicará una consulta que dice:
- Si no en la última fila, AmtConsumedFromLot = Cantidad - QuantityConsumed si QuantityConsumed < Cantidad, de lo contrario Cantidad
- Si más filas, QuantityConsumed = QuantityConsumed - Cantidad
- bucle hasta última fila
- Si última fila, AmtConsumedFromLot = QuantityConsumed
Supongamos Id es una clave principal, y el objetivo es DB SQL 2 005.
Editar: Dado que las personas están proclamando que soy "no dar suficiente información, por favor, cierre esta" Aquí hay más: existe NO mucho que el conjunto Pool_Consumption extrae de, tiene que sacar de todos los lotes donde Pool_Consumption.PoolId = Pooled_Lots.Pool, hasta QuantityConsumed esté totalmente agotada o estoy restando contra el último subconjunto de filas en las que Pooled_Lots Pool_Consumption.PoolId = Pooled_Lots.Pool
no sé qué más para explicar esto. Esta no es una pregunta para la tarea, no es un "ejercicio mental" inventado. ¡Necesito ayuda para tratar de descubrir cómo restar correctamente QuantityConsumed en varias filas!
no sé por qué las personas son hasta derecho a voto a esta pregunta, usted tiene algunos problemas graves de granularidad de datos. La tabla 'Pool_Consumption' no especifica de qué lote provienen las unidades consumidas. Además, arreglé un error tipográfico. -1 – JohnB
No importa, no voy a molestarme en arreglar todos tus errores tipográficos. Por lo menos, ¡dedique un poco más de tiempo a obtener los datos correctos sobre esta pregunta! Sin embargo, su diseño es defectuoso para comenzar. (votó para cerrar) – JohnB
@JohnB Esto es lo que actualmente estoy enfrentando, simplificado tanto como puedo y sin revelar datos confidenciales de mi trabajo.En lugar de ser arrogante y proclamar que estoy haciendo una pregunta estúpida que no merece votos, tal vez me puede aclarar dónde debo agregar "granularidad" para llegar a un punto en el que pueda producir la producción deseada más fácilmente. – Irinotecan