Pereiti prie turinio

ms sql trigger


Svečias Donatis07

Rekomenduojami pranešimai

Svečias Donatis07

Sveiki,

 

yra toks reikalas, kad reikia suskaičiuoti laiką, kiek trunka užsakymo įvykdymas.

 

turim pradžios datą, pabaigos datą, užsakymo ID ir maršruto id.

 

Duomenų bazė atrodo maždaug taip (+ pridėjau dienų_sk (TOTAL_DAYS)):

 

__________________________________________

Pradžia | Pabaiga | Užsakymas | Maršrutas |

__________________________________________|

13.08.23|13.08.25 | 0001 | 8 |

__________________________________________|

13.08.25|13.08.31 | 0001 | 9 |

__________________________________________|

 

 

Bandau daryti viską taip:

 

ALTER TRIGGER [dbo].[Trigger] ON [dbo].[Orders]
  AFTER INSERT,UPDATE
AS 
BEGIN
SET NOCOUNT ON

DESCLARE @route_id numeric,
		@daysdiff numeric,
		@date_from varchar(10),
		@date_to varchar(10),
		@total_days numeric,
		@count numeric
SELECT
		@route_id = ROUTE_ID,
		@date_from = LOAD_DATE_ARR,
		@date_to = UNLOAD_DATE_ARR,
		@daysdiff = DATEDIFF(DAY, LOAD_DATE_ARR, UNLOAD_DATE_ARR),
		@count = COUNT(ROUTE_ID)
	FROM ORDERS_CARGO_ROUTES
	WHERE (ORDER_ID = @order_id)
	GROUP BY ROUTE_ID, LOAD_DATE_ARR, UNLOAD_DATE_ARR

	IF (@date_to = @date_from)
		BEGIN
			SET @total_days = @daysdiff / @count
		END
	ELSE
		BEGIN
			SET @total_days = @count
		END

	UPDATE ORDERS_CARGO_ROUTES SET
		TOTAL_DAYS = @total_days
	WHERE (ROUTE_ID = @route_id)
END

 

Suprantama, kad man atnaujina tik vieną, paskutinį įrašą, bet kaip padaryt, kad atnaujintų visus ir dar su sąlyga, kad jeigu pabaigos data lygi pradžios datai, tuomet ją dalintų pusiau (arba tiek, kiek tą dieną buvo maršrutų).

 

Jau antrą dieną prie to pačio sėdžiu ir kaip niekas nesigauna, taip nesigauna...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...