Toon posts:

[SQL] script dat een tabel vult met alle dagen van d1 t/m d2

Pagina: 1
Acties:

Verwijderd

Topicstarter
Heej guyz,

ik zit met een probleem, ik wil een tabel vullen dmv een sql script/query dat alle data (per dag) van 2001 t/m nu genereert.

een functie zoals deze creeren in Sybase werkt niet:
CREATE FUNCTION dbo.fn_workdays(@d1 AS
datetime, @d2 AS datetime)
RETURNS int
AS
BEGIN
DECLARE @n AS int, @d AS datetime
SELECT @n = 0, @d = @d1
WHILE @d <= @d2
BEGIN
IF DATEPART(weekday, @d /* +@@DATEFIRST
*/) NOT IN(1, 7)
SET @n = @n + 1
SET @d = @d + 1
END
RETURN @n
END


je krijgt dan de volgende foutmelding:

Server Message: Number 155, Severity 15
Server 'FEYTERSERVER', Line 1:
'FUNCTION' is not a recognized CREATE option.
Server Message: Number 156, Severity 15
Server 'FEYTERSERVER', Line 6:
Incorrect syntax near the keyword 'AS'.
Server Message: Number 137, Severity 15
Server 'FEYTERSERVER', Line 7:
Must declare variable '@n'.
Server Message: Number 137, Severity 15
Server 'FEYTERSERVER', Line 8:
Must declare variable '@d'.
Server Message: Number 137, Severity 15
Server 'FEYTERSERVER', Line 10:
Must declare variable '@d'.
Server Message: Number 137, Severity 15
Server 'FEYTERSERVER', Line 15:
Must declare variable '@n'.


Kan iemand mij hierbij helpen?
We hebben Sybase draaien.

Alvast bedankt!

ScR

  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

Ik heb dit heel eenvoudig opgelost (en gebruik deze tabel ook nog voor andere zaken :

maak een tabel counter10, met 1 integer veld, met als naam "Waarde";

code:
1
2
3
4
5
6
7
8
9
10
11
12
tabel counter10 :
Waarde
0
1
2
3
4
5
6
7
8
9


vervolgens de view counter100 :
code:
1
2
select a.waarde*10+b.waarde
from counter10 a,counter10 b


en de view counter10000
code:
1
2
select a.waarde*100+b.waarde
from counter100 a,counter100 b


en de view datumsvanaf2001
code:
1
2
select #1/1/2001#+waarde
from counter10000

Verwijderd

Topicstarter
Bedankt!

ik heb het net geprobeerd.
Dit is de code compatible voor sybase:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
drop table counter10
go
drop view counter100
go
drop view counter10000
go

create table counter10 ( 
waarde int
)

go

insert into dbo.counter10 values (0) 
go
insert into dbo.counter10 values (1) 
go
insert into dbo.counter10 values (2) 
go
insert into dbo.counter10 values (3) 
go
insert into dbo.counter10 values (4) 
go
insert into dbo.counter10 values (5) 
go
insert into dbo.counter10 values (6) 
go
insert into dbo.counter10 values (7) 
go
insert into dbo.counter10 values (8) 
go
insert into dbo.counter10 values (9) 
go

create view counter100 ( waarde)
as
select a.waarde*10+b.waarde
from counter10 a,counter10 b

go

create view counter10000 ( waarde)
as
select a.waarde*100+b.waarde
from counter100 a,counter100 b

go

select dateadd(DD,counter10000.waarde,'01/01/99')
from counter10000