Supongamos que tengo un grupo de filas en un DB (SQLServer 2008 en este caso) que pueden usarse para crear ecuaciones.Cursores vs. ciclo while - SQLServer
-----------------------------------------------------
OperationID | EquationID | Operation | Amount | Order
-----------------------------------------------------
1 | 1 | + | 12 | 1
2 | 1 | + | 12 | 2
3 | 2 | / | 2 | 3
4 | 2 | + | 12 | 1
5 | 2 | - | 2 | 2
-----------------------------------------------------
Necesito encontrar una forma de evaluar las ecuaciones en esta tabla.
Ecuación 1: 12 + 12 = 24
Ecuación 2: (12 - 2)/2 = 5
no puedo pensar en una manera de conseguir estos resultados sin iteración a través de las filas. La única forma en que sé cómo hacerlo es con un cursor o mediante el uso de una tabla temporal y un ciclo while. ¿Hay alguna forma mejor de hacer esto? Si no es generalmente, ¿qué llevará a cabo mejores cursores o bucles while?
Nota: Esto es algo simplificado y en esta etapa del proyecto solo podemos conjeturar sobre cómo se verán los datos. La suposición es que cada 'ecuación' tendrá alrededor de 100 a 1000 operaciones y que habrá unas miles de 'ecuaciones' por día que deberán procesarse.
si está en el servidor sql 2005+ puede usar un CTE recursivo, usando un CASO para +, -,/o * Supongo, ¿cómo se manejan los paréntesis? ¿Se acaba de hacer según la columna Orden? –
¿Cómo sabes a dónde deberían ir los corchetes? – AdaTheDev
Mi pensamiento inicial es, presumiblemente, que tienes una ecuación "bien formada" antes de insertarla en esta estructura, así que me pregunto por qué no puedes simplemente almacenar la ecuación en su totalidad. Siempre puede parametrizarlo (por ejemplo, "(@ p1 - @ p2)/@ p3") para permitir asignar valores en el momento de la ejecución. Sería mucho más simple ... y más simple = bueno :) – AdaTheDev