Om jag har ett och samma datum på ett antal ställen i en fråga.
Kan jag skapa en parameter i början så att jag bara behöver ändra parametern vid ny körning?
Parameter in i fråga?
10 svar · 367 visningar · startad av Lasp
Vilken dbms?
Förlåt @nders och Ni andra som läst frågan
MS SQL gäller det och mitt biluthyrningssystem.
Det är en statistikfråga som kommer att återanvändas därför vore det bra med en (eller två) ingång för datum.
Något sånt här hade jag försökt mig på då:
DECLARE @myDate datetime
SET @myDate = '2005-05-11'
SELECT * FROM tbl WHERE dteDateField = @myDate
-- osv
mvh
Nja den ville inte !
-1 Rader uppdaterades eller lades till
Kan du visa mer av din kod? Vad kommer -1 ifrån till exempel?
det blir -1 när jag lägger till den första deklarationen.
här kommer hela frågan. Det är F_datum och T_Datum jag vill ha som variabler så att jag kan byta datumfälten enkelt:
select 1,'Hyresintäkter',sum(summa) from faktrad where ((rad=1) or (rad=3)) and ((regtidpunkt>='2005-01-01') and (regtidpunkt<='2005-01-31')) union select 2,'Kilometer',sum(summa) from faktrad where ((rad=2) or (rad=4)) and
((regtidpunkt>='2005-01-01') and (regtidpunkt<='2005-01-31')) union select 3,'Självriskreducering',sum(summa) from faktrad where rad=5 and
((regtidpunkt>='2005-01-01') and (regtidpunkt<='2005-01-31')) union select 4,cast(text as varchar(30)),sum(summa) from faktrad where rad>5 and
((regtidpunkt>='2005-01-01') and (regtidpunkt<='2005-01-31')) group by text union select 5,'Moms',sum(momssum) from fakthead where
((regtidpunkt>='2005-01-01') and (regtidpunkt<='2005-01-31')) union select 6,'Körda km',sum(km_in-km_out) from fakthead where
((regtidpunkt>='2005-01-01') and (regtidpunkt<='2005-01-31')) union select 7,'hyrdagar',sum(datediff(d,frm_time,to_time)) from fakthead where
((regtidpunkt>='2005-01-01') and (regtidpunkt<='2005-01-31')) union select 8,'Betsätt '+payment,sum(varuvarde) from fakthead where
((regtidpunkt>='2005-01-01') and (regtidpunkt<='2005-01-31')) group by payment union select 9,'Objtyp '+otype,sum(varuvarde) from fakthead where
((regtidpunkt>='2005-01-01') and (regtidpunkt<='2005-01-31')) group by otype union select 10,'Objekt '+oid,sum(varuvarde) from fakthead where
((regtidpunkt>='2005-01-01') and (regtidpunkt<='2005-01-31')) group by oid
Jag tänkte alltså att det vore bra att se hur det såg ut efter det att du lagt in enligt mitt förslag.
Jag förstår dock inte vad du menar är fel.
Vad blir -1? Var kommer det värdet ifrån? Är det ett fältvärde eller ett värde som skapas i applikationen?
Prova följande, exempelvis i Query Analyzer, och se om det fungerar som du vill:
set nocount on
declare @regdatum1 datetime,
@regdatum2 datetime
set @regdatum1 = '2005-01-01'
set @regdatum2 = '2005-01-31'
select 1,'Hyresintäkter',sum(summa) from faktrad where ((rad=1) or (rad=3)) and ((regtidpunkt>=@regdatum1) and (regtidpunkt<=@regdatum2)) union select 2,'Kilometer',sum(summa) from faktrad where ((rad=2) or (rad=4)) and
((regtidpunkt>=@regdatum1) and (regtidpunkt<=@regdatum2)) union select 3,'Självriskreducering',sum(summa) from faktrad where rad=5 and
((regtidpunkt>=@regdatum1) and (regtidpunkt<=@regdatum2)) union select 4,cast(text as varchar(30)),sum(summa) from faktrad where rad>5 and
((regtidpunkt>=@regdatum1) and (regtidpunkt<=@regdatum2)) group by text union select 5,'Moms',sum(momssum) from fakthead where
((regtidpunkt>=@regdatum1) and (regtidpunkt<=@regdatum2)) union select 6,'Körda km',sum(km_in-km_out) from fakthead where
((regtidpunkt>=@regdatum1) and (regtidpunkt<=@regdatum2)) union select 7,'hyrdagar',sum(datediff(d,frm_time,to_time)) from fakthead where
((regtidpunkt>=@regdatum1) and (regtidpunkt<=@regdatum2)) union select 8,'Betsätt '+payment,sum(varuvarde) from fakthead where
((regtidpunkt>=@regdatum1) and (regtidpunkt<=@regdatum2)) group by payment union select 9,'Objtyp '+otype,sum(varuvarde) from fakthead where
((regtidpunkt>=@regdatum1) and (regtidpunkt<=@regdatum2)) group by otype union select 10,'Objekt '+oid,sum(varuvarde) from fakthead where
((regtidpunkt>=@regdatum1) and (regtidpunkt<=@regdatum2)) group by oid
Tack @nders. Kör jag den i query fönster så fungerar den.
Det är i mitt eget administrationsprogram som resultatet blir -1.
Jag måste kolla i debugläge.
Du bör använda
set @regdatum2 = '2005-01-31 23:59:59'
om du vill få med alla värden från Januari.
Tack LarsG Helt rätt tänkt.
Jag måste jobba vidare med urvalen märker jag för pengarna stämmer inte helt.
Kan vara det du påpekar. Många hyror avslutats den siste !!