webForumDet fria alternativet

Parameter in i fråga?

10 svar · 367 visningar · startad av Lasp

LaspMedlem sedan juli 200012 980 inlägg
#1

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?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Vilken dbms?

LaspMedlem sedan juli 200012 980 inlägg
#3

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.

@ndersMedlem sedan juni 200032 969 inlägg
#4

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

LaspMedlem sedan juli 200012 980 inlägg
#5

Nja den ville inte !
-1 Rader uppdaterades eller lades till

@ndersMedlem sedan juni 200032 969 inlägg
#6

Kan du visa mer av din kod? Vad kommer -1 ifrån till exempel?

LaspMedlem sedan juli 200012 980 inlägg
#7

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

@ndersMedlem sedan juni 200032 969 inlägg
#8

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
LaspMedlem sedan juli 200012 980 inlägg
#9

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.

LarsGMedlem sedan dec. 200012 464 inlägg
#10

Du bör använda

set @regdatum2 = '2005-01-31 23:59:59'

om du vill få med alla värden från Januari.

LaspMedlem sedan juli 200012 980 inlägg
#11

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 !!

142 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)