Re: Language problem
From: Andrew John (aj_at_DELETEmistrose.com)
Date: 03/16/04
- Next message: francois: "Re: INNER JOIN newbie question"
- Previous message: James Goodman: "Re: Grant EXEC on Stored Procedure"
- In reply to: simon: "Language problem"
- Messages sorted by: [ date ] [ thread ]
Date: Tue, 16 Mar 2004 21:13:35 +1100
Simon,
It would help if you posted table structures and sample data in DDL
( query analyser runnable form ). "Wrong results" doesn't help much.
The layout of your code is so difficult to read that troubleshooting it
without the above is too hard.
Also are you sure that is the correct code for the sp. I don't
set @datum declared anywhere.
Here is ( IMHO ) a more readable version if someone else wants to have a go:
CREATE PROCEDURE e_olap_prenosPodatkov
(
@datum datetime
)
AS
DECLARE @danZ int, @mesecZ int, @letoZ int,@danK int, @mesecK int, @letoK
int,@danM int, @mesecM int, @letoM int,@danS int, @mesecS int, @letoS int
DECLARE @dt DATETIME,@datumMesec dateTime,@datumTedenZ datetime,@datumTedenK
datetime
set @datumMesec=DATEADD(m, -1,@datum)
set @datumTedenZ=DATEADD(dd,-1*DATEPART(dw, @datum)-6,@datum)
set @datumTedenK=DATEADD(dd, -1*DATEPART(dw, @datum) +1,@datum)
set @danM=day(@datumMesec)
set @mesecM=month(@datumMesec)
set @letoM=year(@datumMesec)
set @danS=day(@datum)
set @mesecS=month(@datum)
set @letoS=year(@datum)
set @danZ=day(@datumTedenZ)
set @mesecZ=month(@datumTedenZ)
set @letoZ=year(@datumTedenZ)
set @danK=day(@datumTedenK)
set @mesecK=month(@datumTedenK)
set @letoK=year(@datumTedenK)
SET @dt = CONVERT(VARCHAR,@datum,112)
INSERT INTO [simonZ].[eNarocanje].[dbo].[zalogeOlap]
(
zo_drzava_id,
zo_izd_id,
zo_datum,
zo_zaloga_malo,
zo_pr_mesec,
zo_pr_teden
)
SELECT
Tz.RCO,
Tz.ID,
@datum,
Tz.zaloga ,
COALESCE(Tm.monthQuantity,0)AS mesec,
COALESCE(Tw.weekQuantity,0)AS teden
FROM
( SELECT
a.ID,
a.RCO,
SUM(kolicina)AS zaloga
FROM
( select
i.[ENOTNA_SIFRA]as ID,
s.RCO,s.stanje as kolicina
FROM [olap-server].[DW_Temp].[dbo].[t_stanje_cube] s
INNER JOIN [olap-server].[DW_Temp].[dbo].[s_izdelek] i
ON s.ID=i.[ID] AND s.RCO=i.RCO
WHERE s.datum >= @dt AND s.datum < DATEADD(DAY,1,@dt)
AND s.odpis
in ( SELECT ol.idSkladisca
FROM [simonZ].[eNarocanje].[dbo].[olapSkladisce] ol
WHERE ol.idDrzave=s.RCO
AND ol.namenSkladisca=1
)
UNION ALL
SELECT
i.[ENOTNA_SIFRA] as ID,
b.rco,-b.quantity as kolicina
FROM [olap-server].[DW_Temp].[dbo].[t_backorder_cube] b
INNER JOIN [olap-server].[DW_Temp].[dbo].[s_izdelek] i
ON b.[id_izdelka]=i.[ID]
AND b.RCO=i.RCO
WHERE b.day=@danS
AND b.month=@mesecS
AND b.year=@letoS
) as a GROUP BY a.ID,a.rco)as Tz
LEFT JOIN
( SELECT
c.rco,
i.[ENOTNA_SIFRA] as ID,
sum(c.quantity) as monthQuantity
from [olap-server].[DW_Temp].[dbo].[t_post_narocilnice_cube] c
INNER JOIN [olap-server].[DW_Temp].[dbo].[s_izdelek] i
ON c.id_izdelka=i.[ID]
AND c.RCO=i.RCO
WHERE ( ( c.day >=@danM
AND c.month = @mesecM
AND c.year=@letoM
)
OR ( c.day <= @danS
AND c.month = @mesecS
AND c.year=@letoS
)
)
group by c.rco, i.[ENOTNA_SIFRA]
)as Tm
ON Tm.rco=Tz.Rco
and Tm.ID=Tz.ID
LEFT JOIN
( SELECT
c1.rco,
i.[ENOTNA_SIFRA]as ID,
sum(c1.quantity)as weekQuantity
from [olap-server].[DW_Temp].[dbo].[t_post_narocilnice_cube]c1
INNER JOIN [olap-server].[DW_Temp].[dbo].[s_izdelek] i
ON c1.id_izdelka=i.[ID]
AND c1.RCO=i.RCO
WHERE c1.day>@danZ
AND c1.day<=@danK
AND c1.month = @mesecZ
AND c1.year=@letoZ
group by c1.rco,i.[ENOTNA_SIFRA]
) as Tw
ON Tw.rco=tz.Rco and Tw.ID=Tz.ID
Regards
AJ
"simon" <simon.zupan@stud-moderna.si> wrote in message news:e7GOdEzCEHA.4080@TK2MSFTNGP09.phx.gbl...
> I have collation setting of my database: Slovenian_cl_as
>
> Then in application I have settings of my connection:
>
> Locale Identifier=1060 ;Current Language=Slovenian;
>
> So, everything is set to Slovenian.
>
> And everything works fine just in one example when I call procedure
> e_olap_prenosPodatkov
> I get the wrong results.
> In this procedure I use a lot of date functions.
> If I change connection settings to general, than this procedure works, but
> everything else doesn't because all other functions are set to slovenian.
> What can I do?
>
> Thank you,
> Simon
>
> This is my SP which doesn't work for slovenian settings:
>
> CREATE PROCEDURE e_olap_prenosPodatkov
> AS
>
> DECLARE @danZ int, @mesecZ int, @letoZ int,@danK int, @mesecK int, @letoK
> int,@danM int, @mesecM int, @letoM int,@danS int, @mesecS int, @letoS int
> DECLARE @dt DATETIME,@datumMesec dateTime,@datumTedenZ datetime,@datumTedenK
> datetime
>
> set @datumMesec=DATEADD(m, -1,@datum)
> set @datumTedenZ=DATEADD(dd,-1*DATEPART(dw, @datum)-6,@datum)
> set @datumTedenK=DATEADD(dd, -1*DATEPART(dw, @datum) +1,@datum)
>
> set @danM=day(@datumMesec)
> set @mesecM=month(@datumMesec)
> set @letoM=year(@datumMesec)
> set @danS=day(@datum)
> set @mesecS=month(@datum)
> set @letoS=year(@datum)
> set @danZ=day(@datumTedenZ)
> set @mesecZ=month(@datumTedenZ)
> set @letoZ=year(@datumTedenZ)
> set @danK=day(@datumTedenK)
> set @mesecK=month(@datumTedenK)
> set @letoK=year(@datumTedenK)
>
> SET @dt = CONVERT(VARCHAR,@datum,112)
>
> INSERT INTO [simonZ].[eNarocanje].[dbo].[zalogeOlap]
> (zo_drzava_id,zo_izd_id,zo_datum,zo_zaloga_malo,zo_pr_mesec,zo_pr_teden)
> SELECT Tz.RCO,Tz.ID,@datum,Tz.zaloga ,COALESCE(Tm.monthQuantity,0)AS
> mesec,COALESCE(Tw.weekQuantity,0)AS teden FROM
> (SELECT a.ID, a.RCO, SUM(kolicina)AS zaloga
> FROM
> (select i.[ENOTNA_SIFRA]as ID,s.RCO,s.stanje as kolicina FROM
> [olap-server].[DW_Temp].[dbo].[t_stanje_cube] s INNER JOIN
> [olap-server].[DW_Temp].[dbo].[s_izdelek] i ON s.ID=i.[ID] AND s.RCO=i.RCO
> WHERE s.datum >= @dt AND s.datum < DATEADD(DAY,1,@dt)
> AND s.odpis in(SELECT ol.idSkladisca FROM
> [simonZ].[eNarocanje].[dbo].[olapSkladisce] ol WHERE ol.idDrzave=s.RCO AND
> ol.namenSkladisca=1)
> UNION ALL
> SELECT i.[ENOTNA_SIFRA] as ID,b.rco,-b.quantity as kolicina FROM
> [olap-server].[DW_Temp].[dbo].[t_backorder_cube] b INNER JOIN
> [olap-server].[DW_Temp].[dbo].[s_izdelek] i ON b.[id_izdelka]=i.[ID] AND
> b.RCO=i.RCO
> WHERE b.day=@danS AND b.month=@mesecS AND b.year=@letoS
> ) as a GROUP BY a.ID,a.rco)as Tz
> LEFT JOIN
> (SELECT c.rco,i.[ENOTNA_SIFRA]as ID,sum(c.quantity)as monthQuantity from
> [olap-server].[DW_Temp].[dbo].[t_post_narocilnice_cube] c
> INNER JOIN [olap-server].[DW_Temp].[dbo].[s_izdelek] i ON
> c.id_izdelka=i.[ID] AND c.RCO=i.RCO
> WHERE ((c.day >=@danM AND c.month = @mesecM AND c.year=@letoM)
> OR (c.day<=@danS AND c.month=@mesecS AND c.year=@letoS))
> group by c.rco,i.[ENOTNA_SIFRA])as Tm
> ON Tm.rco=Tz.Rco and Tm.ID=Tz.ID
> LEFT JOIN
> (SELECT c1.rco,i.[ENOTNA_SIFRA]as ID,sum(c1.quantity)as weekQuantity from
> [olap-server].[DW_Temp].[dbo].[t_post_narocilnice_cube]c1
> INNER JOIN [olap-server].[DW_Temp].[dbo].[s_izdelek] i ON
> c1.id_izdelka=i.[ID] AND c1.RCO=i.RCO
> WHERE c1.day>@danZ AND c1.day<=@danK AND c1.month = @mesecZ AND
> c1.year=@letoZ
> group by c1.rco,i.[ENOTNA_SIFRA]) as Tw
> ON Tw.rco=tz.Rco and Tw.ID=Tz.ID
>
>
>
- Next message: francois: "Re: INNER JOIN newbie question"
- Previous message: James Goodman: "Re: Grant EXEC on Stored Procedure"
- In reply to: simon: "Language problem"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|