|
Tu první část rozhodně vyzkouším. K té druhé části jde o to. Mám formulář kde uživatel vybere rokod, rokdo, ukazatel a libovolny pocet registrovanych uzivatelu (max. však 5) se kterými se chce porovnat. Kvůli tomu, že počet uživatelů se kterými se chce srovnat je měnitelný jsem řešila tu první část. Zkusím trošku vysvětlit tu proceduru: Mám proceduru, kde: 1) vybírám podle kritérií data a vkládám je do tab_vystupek. 2) Potom z tab_vystupek vybírám data pouze pro Uzivatele1 a tyto data přiřadím do tab_vystup1. Pokud data pro pro uzivatele1 v tab_vystupek neexistují tak jim přiřadím hodnotu 0. 3) tohle opakuju pro zbylé uživatele 4) je to zbytečně složité, ale zaprvé jsem amatér a za druhé z těch dat potom vytvářím pohled, který potřebuju mít v tomto formátu: rok skola1 skola2 skola3 ..... rokod hodnota hodnota hodnota ...... rokod+1 hodnota hodnota hodnota ..... . . . rokdo hodnota hodnota hodnota ...... Buď tabulka obsahuje konkrétní hodnotu nebo 0. Potřebuju data přesně v tomhle formátu, jelikož je pak používám v grafech. kde x osa jsou roky a na y ose jsou hodnoty a jednotlivé školy jsou série grafu. Zde mám kód mé procedury: právě že zatím v ní není měnitelný počet škol ani žádná podmínka pro počet let. Je to zatím natvrdo pro 3 školy a 3roky. Právě bych to chtěla nějak zautomatizovat at můžu hýbat s počtem těch škol a nějak vyřešit ty roky...jsem z toho úplně na větvi. Nejsem žádný zkušený programátor. :( Ale snažím se co můžu.
USE [BenchmarkingDatabase]
GO
/****** Object: StoredProcedure [dbo].[spVystup] Script Date: 04/25/2010 13:13:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spVystup]
@ID_RokOd int,
@ID_RokDo int,
@ID_Skola1 int,
@ID_Skola2 int,
@ID_Skola3 int,
@ID_Ukazatel int
AS
BEGIN
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Tab_Vystupek]') AND type in (N'U'))
DROP TABLE [dbo].[Tab_Vystupek]
CREATE TABLE [dbo].[Tab_Vystupek](
[ID] [int] NOT NULL,
[ID_Rok] [int] NOT NULL,
[ID_Skola] [int] NOT NULL,
[ID_Ukazatel] [int] NULL,
[ID_Vypocet_ID_Ukazatel] [int] NOT NULL,
[Hodnota] [decimal](18, 0) NOT NULL
) ON [PRIMARY]
INSERT INTO dbo.Tab_Vystupek
SELECT * FROM dbo.Tab_Vystup
WHERE (ID_Rok >= @ID_RokOd AND ID_Rok<=@ID_RokDo) And (ID_Skola=@ID_Skola1 or ID_Skola=@ID_Skola2 or ID_Skola=@ID_Skola3) and ID_Vypocet_ID_Ukazatel=@ID_Ukazatel
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Tab_Vystup1]') AND type in (N'U'))
DROP TABLE [dbo].[Tab_Vystup1]
CREATE TABLE [dbo].[Tab_Vystup1](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_Rok] [int] NOT NULL,
[ID_Skola1] [int] NOT NULL,
[Hodnota] [decimal](18, 0) NOT NULL
CONSTRAINT [PK_Tab_Vystup1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
BEGIN
IF(EXISTS(SELECT Hodnota, ID_Skola, ID_Rok FROM dbo.Tab_Vystupek WHERE ID_Skola=@ID_Skola1 And ID_Rok=@ID_RokOD) )
BEGIN
INSERT INTO dbo.Tab_Vystup1
SELECT ID_Rok, ID_Skola, Hodnota FROM dbo.Tab_Vystupek
WHERE ID_Skola=@ID_Skola1 and ID_Rok=@ID_RokOd
END
ElSE
BEGIN
insert dbo.Tab_Vystup1 values (@ID_RokOd,@ID_Skola1,0)
END
END
IF(EXISTS(SELECT Hodnota, ID_Skola, ID_Rok FROM dbo.Tab_Vystupek WHERE ID_Skola=@ID_Skola1 And ID_Rok=@ID_RokOD+1) )
BEGIN
INSERT INTO dbo.Tab_Vystup1
SELECT ID_Rok, ID_Skola, Hodnota FROM dbo.Tab_Vystupek
WHERE ID_Skola=@ID_Skola1 and ID_Rok=@ID_RokOd+1
END
ElSE
BEGIN
insert dbo.Tab_Vystup1 values (@ID_RokOd+1,@ID_Skola1,0)
END
END
IF(EXISTS(SELECT Hodnota, ID_Skola, ID_Rok FROM dbo.Tab_Vystupek WHERE ID_Skola=@ID_Skola1 And ID_Rok=@ID_RokDo) )
BEGIN
INSERT INTO dbo.Tab_Vystup1
SELECT ID_Rok, ID_Skola, Hodnota FROM dbo.Tab_Vystupek
WHERE ID_Skola=@ID_Skola1 and ID_Rok=@ID_RokDo
END
ElSE
BEGIN
insert dbo.Tab_Vystup1 values (@ID_RokDo,@ID_Skola1,0)
END
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Tab_Vystup2]') AND type in (N'U'))
DROP TABLE [dbo].[Tab_Vystup2]
CREATE TABLE [dbo].[Tab_Vystup2](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_Rok] [int] NOT NULL,
[ID_Skola2] [int] NOT NULL,
[Hodnota] [decimal](18, 0) NOT NULL
CONSTRAINT [PK_Tab_Vystup2] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
BEGIN
IF(EXISTS(SELECT Hodnota, ID_Skola, ID_Rok FROM dbo.Tab_Vystupek WHERE ID_Skola=@ID_Skola2 And ID_Rok=@ID_RokOD) )
BEGIN
INSERT INTO dbo.Tab_Vystup2
SELECT ID_Rok, ID_Skola, Hodnota FROM dbo.Tab_Vystupek
WHERE ID_Skola=@ID_Skola2 and ID_Rok=@ID_RokOd
END
ElSE
BEGIN
insert dbo.Tab_Vystup2 values (@ID_RokOd,@ID_Skola2,0)
END
END
IF(EXISTS(SELECT Hodnota, ID_Skola, ID_Rok FROM dbo.Tab_Vystupek WHERE ID_Skola=@ID_Skola2 And ID_Rok=@ID_RokOD+1) )
BEGIN
INSERT INTO dbo.Tab_Vystup2
SELECT ID_Rok, ID_Skola, Hodnota FROM dbo.Tab_Vystupek
WHERE ID_Skola=@ID_Skola2 and ID_Rok=@ID_RokOd+1
END
ElSE
BEGIN
insert dbo.Tab_Vystup2 values (@ID_RokOd+1,@ID_Skola2,0)
END
IF(EXISTS(SELECT Hodnota, ID_Skola, ID_Rok FROM dbo.Tab_Vystupek WHERE ID_Skola=@ID_Skola2 And ID_Rok=@ID_RokDo))
BEGIN
INSERT INTO dbo.Tab_Vystup2
SELECT ID_Rok, ID_Skola, Hodnota FROM dbo.Tab_Vystupek
WHERE ID_Skola=@ID_Skola2 and ID_Rok=@ID_RokDo
END
ElSE
BEGIN
insert dbo.Tab_Vystup2 values (@ID_RokDo,@ID_Skola2,0)
END
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Tab_Vystup3]') AND type in (N'U'))
DROP TABLE [dbo].[Tab_Vystup3]
CREATE TABLE [dbo].[Tab_Vystup3](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ID_Rok] [int] NOT NULL,
[ID_Skola3] [int] NOT NULL,
[Hodnota] [decimal](18, 0) NOT NULL
CONSTRAINT [PK_Tab_Vystup3] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
BEGIN
IF(EXISTS(SELECT Hodnota, ID_Skola, ID_Rok FROM dbo.Tab_Vystupek WHERE ID_Skola=@ID_Skola3 And ID_Rok=@ID_RokOD) )
BEGIN
INSERT INTO dbo.Tab_Vystup3
SELECT ID_Rok, ID_Skola, Hodnota FROM dbo.Tab_Vystupek
WHERE ID_Skola=@ID_Skola3 and ID_Rok=@ID_RokOd
END
ElSE
BEGIN
insert dbo.Tab_Vystup3 values (@ID_RokOd,@ID_Skola3,0)
END
IF(EXISTS(SELECT Hodnota, ID_Skola, ID_Rok FROM dbo.Tab_Vystupek WHERE ID_Skola=@ID_Skola3 And ID_Rok=@ID_RokOD+1) )
BEGIN
INSERT INTO dbo.Tab_Vystup3
SELECT ID_Rok, ID_Skola, Hodnota FROM dbo.Tab_Vystupek
WHERE ID_Skola=@ID_Skola3 and ID_Rok=@ID_RokOd+1
END
ElSE
BEGIN
insert dbo.Tab_Vystup3 values (@ID_RokOd+1,@ID_Skola3,0)
END
IF(EXISTS(SELECT Hodnota, ID_Skola, ID_Rok FROM dbo.Tab_Vystupek WHERE ID_Skola=@ID_Skola3 And ID_Rok=@ID_RokDo) )
BEGIN
INSERT INTO dbo.Tab_Vystup3
SELECT ID_Rok, ID_Skola, Hodnota FROM dbo.Tab_Vystupek
WHERE ID_Skola=@ID_Skola3 and ID_Rok=@ID_RokDo
END
ElSE
BEGIN
insert dbo.Tab_Vystup3 values (@ID_RokDo,@ID_Skola3,0)
END
end
|