USE [Vertragsverwaltung_20160404] GO /****** Object: StoredProcedure [dbo].[sp_get_struktur] Script Date: 02.12.2016 09:08:53 ******/ DROP PROCEDURE [dbo].[sp_get_struktur] GO /****** Object: StoredProcedure [dbo].[sp_get_struktur] Script Date: 02.12.2016 09:08:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[sp_get_struktur] @per DATETIME AS BEGIN SET NOCOUNT ON; SELECT 'OE_' + LTRIM(RTRIM(STR(OeNr))) AS ID, 'OE_' + LTRIM(RTRIM(STR(ParentId))) AS ParentID, Bezeichnung, 0 AS ImageIndex, Beschreibung AS ErweiterteSuche, sortierung AS sort INTO #tmp1 FROM dbo.OE WHERE aktiv=1 ORDER BY Sortierung INSERT #tmp1 ( id, parentid, bezeichnung, imageindex, ErweiterteSuche, sort ) VALUES ( 'OE_0', NULL, 'Root', 0, ' ',1 ) INSERT #tmp1 SELECT 'MA_' + LTRIM(RTRIM(STR(dbo.MA.MANr))) AS ID, 'OE_-1' AS ParentID, dbo.MA.Name + ' ' + dbo.MA.Vorname AS Bezeichnung, 1 AS ImageIndex, dbo.MA.Name + ' ' + dbo.MA.Vorname AS ErweiterteSuche, 0 AS sort FROM dbo.MA LEFT OUTER JOIN dbo.MADetails ON dbo.MA.MANr = dbo.MADetails.MANr WHERE ma.aktiv=1 AND dbo.ma.manr NOT IN ( SELECT manr FROM dbo.MADetails WHERE aktiv = 1 ) DECLARE @mnr INT DECLARE @rc INT DECLARE xc CURSOR FOR SELECT manr FROM ma WHERE aktiv = 1 AND gueltig_bis >=@per OPEN xc FETCH NEXT FROM xc INTO @mnr WHILE @@FETCH_STATUS = 0 BEGIN SELECT @rc = COUNT(*) FROM dbo.MADetails WHERE manr = @mnr AND aktiv=1 AND Gueltig_ab <= @per IF @rc > 0 BEGIN INSERT #tmp1 SELECT TOP 1 'MA_' + LTRIM(RTRIM(STR(dbo.MA.MANr))) AS ID, 'OE_' + ISNULL(LTRIM(RTRIM(STR(dbo.MADetails.OENr))), '-1') AS ParentID, +dbo.MA.Name + ' ' + dbo.MA.Vorname AS Bezeichnung, 1 AS ImageIndex, dbo.MA.Name + ' ' + dbo.MA.Vorname AS ErweiterteSuche, dbo.ma.sortierung AS sort FROM dbo.MA LEFT OUTER JOIN dbo.MADetails ON dbo.MA.MANr = dbo.MADetails.MANr WHERE dbo.MADetails.manr = @mnr AND dbo.MADetails.Aktiv=1 AND Gueltig_ab <= @per ORDER BY Gueltig_ab desc END FETCH NEXT FROM xc INTO @mnr END CLOSE xc DEALLOCATE xc SELECT * FROM #tmp1 ORDER BY parentid,sort, Bezeichnung DROP TABLE #tmp1 END GO