Anlage des Repos
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
|
||||
/****** Object: UserDefinedFunction [dbo].[FNCUST_GET_PROPERTY_VALUES] Script Date: 17.10.2021 19:11:04 ******/
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
-- T-SQL Table function to get WinLine property values
|
||||
-- Requires min. SQL Version 2017!
|
||||
|
||||
-- See examples at the bottom!
|
||||
|
||||
-- Stand: MK // 19.10.2021
|
||||
-- 19.10.2021 Description expanded
|
||||
-- 17.10.2021 @mesocomp, @mesoyear and @ResultType implemented
|
||||
-- 06.10.2021 Initial
|
||||
|
||||
alter FUNCTION [dbo].[FNCUST_GET_PROPERTY_VALUES] (
|
||||
@PropertyID BIGINT, -- = eg 1011 or 1012, see (select [c000], [c010] from [CWLSYSTEM].[dbo].[T069CMP] where [C003] = 0 and [c006] = 0 and [c000] > 1000)
|
||||
@ObjectID VARCHAR(200), -- = eg 10000002 = PersonalAccount; 4711 = ProductNr; 10i001 = PotentialBuyer
|
||||
@PropertyTypeID BIGINT, -- = eg 3 = PersonalAccount; 1 = ProductNr; 5 = PotentialBuyer
|
||||
@mesocomp VARCHAR(4), -- = OPTIONAL - Only valid in combination with @mesoyear
|
||||
@mesoyear SMALLINT, -- = OPTIONAL - Only valid in combination with @mesocomp
|
||||
@ResultType VARCHAR(20) -- = OPTIONAL - Determ if Result should be compressed in one line, see examples
|
||||
)
|
||||
RETURNS @vTB_RESULT TABLE ([MESOKEY] [BIGINT] NOT NULL,
|
||||
[PROPERTY_COUNT] [BIGINT] NOT NULL,
|
||||
[PROPERTY_VALUE] [VARCHAR](max) NULL)
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
DECLARE @PropertyCounter BIGINT;
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
-- IF optional params are null
|
||||
IF (@mesocomp is NULL) and (@mesoyear is NULL)
|
||||
|
||||
BEGIN
|
||||
|
||||
-- Count how many property values were found
|
||||
SELECT @PropertyCounter = count(CountFunction.C010) FROM (
|
||||
|
||||
SELECT [CWLSYSTEM].[dbo].[t069cmp].[c010]
|
||||
|
||||
FROM [t070] (NOLOCK)
|
||||
JOIN [CWLSYSTEM].[dbo].[t069cmp] (NOLOCK) ON [t070].[c002] = [t069cmp].[C001]
|
||||
|
||||
WHERE [CWLSYSTEM].[dbo].[t069cmp].[c000] = @PropertyID
|
||||
and [CWLSYSTEM].[dbo].[t069cmp].[C003] = 0
|
||||
and [t070].[C000] = @ObjectID
|
||||
and [t070].[C003] = @PropertyTypeID
|
||||
|
||||
GROUP BY [CWLSYSTEM].[dbo].[t069cmp].[c010]
|
||||
|
||||
) as CountFunction
|
||||
|
||||
END
|
||||
|
||||
-- If optional params were set
|
||||
ELSE
|
||||
|
||||
BEGIN
|
||||
|
||||
-- Count how many property values were found and respect mesoyear and mesocomp
|
||||
SELECT @PropertyCounter = count(CountFunction.C010) FROM (
|
||||
|
||||
SELECT [CWLSYSTEM].[dbo].[t069cmp].[c010]
|
||||
|
||||
FROM [t070] (NOLOCK)
|
||||
JOIN [CWLSYSTEM].[dbo].[t069cmp] (NOLOCK) ON [t070].[c002] = [t069cmp].[C001]
|
||||
|
||||
WHERE [CWLSYSTEM].[dbo].[t069cmp].[c000] = @PropertyID
|
||||
and [CWLSYSTEM].[dbo].[t069cmp].[C003] = 0
|
||||
and [t070].[C000] = @ObjectID
|
||||
and [t070].[C003] = @PropertyTypeID
|
||||
and [t070].[mesocomp] = @mesocomp
|
||||
and [t070].[mesoyear] = @mesoyear
|
||||
|
||||
GROUP BY [CWLSYSTEM].[dbo].[t069cmp].[c010]
|
||||
|
||||
) as CountFunction
|
||||
|
||||
END
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
IF (@PropertyCounter >= 1)
|
||||
|
||||
BEGIN
|
||||
|
||||
IF (@mesocomp is NULL) and (@mesoyear is NULL)
|
||||
|
||||
BEGIN
|
||||
|
||||
INSERT INTO @vTB_RESULT ([MESOKEY],[PROPERTY_COUNT],[PROPERTY_VALUE])
|
||||
|
||||
SELECT [CWLSYSTEM].[dbo].[t069cmp].[MESOKEY],
|
||||
@PropertyCounter,
|
||||
[CWLSYSTEM].[dbo].[t069cmp].[c010]
|
||||
|
||||
FROM [t070] (NOLOCK)
|
||||
JOIN [CWLSYSTEM].[dbo].[t069cmp] (NOLOCK) ON [t070].[c002] = [t069cmp].[C001]
|
||||
|
||||
WHERE [CWLSYSTEM].[dbo].[t069cmp].[c000] = @PropertyID
|
||||
and [CWLSYSTEM].[dbo].[t069cmp].[C003] = 0
|
||||
and [t070].[C000] = @ObjectID
|
||||
and [t070].[C003] = @PropertyTypeID
|
||||
|
||||
GROUP BY [CWLSYSTEM].[dbo].[t069cmp].[mesokey],
|
||||
[CWLSYSTEM].[dbo].[t069cmp].[c010]
|
||||
|
||||
END
|
||||
|
||||
ELSE
|
||||
|
||||
BEGIN
|
||||
|
||||
INSERT INTO @vTB_RESULT ([MESOKEY],[PROPERTY_COUNT],[PROPERTY_VALUE])
|
||||
|
||||
SELECT [CWLSYSTEM].[dbo].[t069cmp].[MESOKEY],
|
||||
@PropertyCounter,
|
||||
[CWLSYSTEM].[dbo].[t069cmp].[c010]
|
||||
|
||||
FROM [t070] (NOLOCK)
|
||||
JOIN [CWLSYSTEM].[dbo].[t069cmp] (NOLOCK) ON [t070].[c002] = [t069cmp].[C001]
|
||||
|
||||
WHERE [CWLSYSTEM].[dbo].[t069cmp].[c000] = @PropertyID
|
||||
and [CWLSYSTEM].[dbo].[t069cmp].[C003] = 0
|
||||
and [t070].[C000] = @ObjectID
|
||||
and [t070].[C003] = @PropertyTypeID
|
||||
and [t070].[mesocomp] = @mesocomp
|
||||
and [t070].[mesoyear] = @mesoyear
|
||||
|
||||
GROUP BY [CWLSYSTEM].[dbo].[t069cmp].[mesokey],
|
||||
[CWLSYSTEM].[dbo].[t069cmp].[c010]
|
||||
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
ELSE
|
||||
|
||||
BEGIN
|
||||
|
||||
INSERT INTO @vTB_RESULT ([MESOKEY],[PROPERTY_COUNT],[PROPERTY_VALUE])
|
||||
|
||||
SELECT 0, @PropertyCounter, NULL
|
||||
|
||||
END
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
-- IF Result should be in one Line, delete temp table and use STRING_AGG function
|
||||
IF (@ResultType is not NULL) and (@PropertyCounter > 1)
|
||||
|
||||
BEGIN
|
||||
|
||||
DECLARE @vTB_RESULT_TEMP TABLE ([MESOKEY] [BIGINT] NOT NULL,
|
||||
[PROPERTY_COUNT] [BIGINT] NOT NULL,
|
||||
[PROPERTY_VALUE] [VARCHAR](max) NULL)
|
||||
|
||||
INSERT INTO @vTB_RESULT_TEMP ([MESOKEY],[PROPERTY_COUNT],[PROPERTY_VALUE])
|
||||
SELECT * FROM @vTB_RESULT
|
||||
|
||||
DELETE FROM @vTB_RESULT
|
||||
|
||||
INSERT INTO @vTB_RESULT ([MESOKEY],[PROPERTY_COUNT],[PROPERTY_VALUE])
|
||||
SELECT 9999999999, @PropertyCounter, (STRING_AGG(CONVERT(NVARCHAR(max), ISNULL(PROPERTY_VALUE,'')), ';')) FROM @vTB_RESULT_TEMP;
|
||||
|
||||
RETURN;
|
||||
|
||||
END
|
||||
|
||||
RETURN;
|
||||
|
||||
END
|
||||
|
||||
|
||||
-- ================ EXAMPLES ================
|
||||
|
||||
-- Get (minimum) 1 or n lines back
|
||||
-- select * from [FNCUST_GET_PROPERTY_VALUES](1012,'10000002',3,null,null,null)
|
||||
|
||||
-- Get (always) 1 line back
|
||||
-- select * from [FNCUST_GET_PROPERTY_VALUES](1012,'10000002',3,null,null,'not null')
|
||||
|
||||
-- ==========================================
|
||||
Reference in New Issue
Block a user