March 27, 2012 at 11:01 am
USE [SSRS_Run_Reports]
GO
/****** Object: UserDefinedFunction [dbo].[fx_ArrayList_IP_9378] Script Date: 03/26/2012 11:23:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/* =============================================
Author:John Doe
Create date: 03/20/2012
Description:To be able to parse over the extended fields that you will find in [loadprogress].[PUB].[TRANDATA-ARCHIVE]
and to sum only transactions that had FUEL ONLY
fields to parse over [prod-code] [prod-qty]
select dbo.[fx_ArrayList_IP_9378]('5;16;99;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','86.475;2;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0')
=============================================*/
ALTER FUNCTION [dbo].[fx_ArrayList_IP_9378]
(
@param1 as varchar(max),
@param2 as varchar(max)
)
RETURNS decimal(18,3)
BEGIN
DECLARE @TableOfValues TABLE
(
RowIDsmallint IDENTITY(1,1),
[ProdCode]int,
[ProdQty]decimal(18,3)
)
DECLARE @LenString int
DECLARE @Delimiter varchar(5)
DECLARE @ProdCode varchar(MAX)
DECLARE @ProdQty varchar(MAX)
DECLARE @RowMax int
DECLARE @RowMin int
DECLARE @Qty decimal(18,3)
SET @Delimiter = ';'
--PROD-CODE
set @ProdCode = @param1--'5;165;99;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0'
--PROD-QTY
set @ProdQty = @param2--'86.475;2;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0'
WHILE len(@ProdCode) > 0
BEGIN
SELECT @LenString =
(CASE charindex( @Delimiter, @ProdCode )
WHEN 0 THEN len( @ProdCode )
ELSE ( charindex( @Delimiter, @ProdCode ) -1 )
END
)
INSERT INTO @TableOfValues
SELECT substring( @ProdCode, 1, @LenString),0
SELECT @ProdCode =
(CASE ( len( @ProdCode ) - @LenString )
WHEN 0 THEN ''
ELSE right( @Prodcode, len( @ProdCode ) - @LenString - 1 )
END
)
END
SELECT @RowMIN = MIN(RowID), @RowMax = MAX(RowID) FROM @TableOfValues
WHILE @RowMin <= @RowMax
BEGIN
SELECT @LenString =
(CASE charindex( @Delimiter, @ProdQty )
WHEN 0 THEN len( @ProdQty )
ELSE ( charindex( @Delimiter, @ProdQty ) -1 )
END
)
UPDATE @TableOfValues
--SELECT substring( @ProdQty, 1, @LenString),0
SET
[ProdQty] = substring( @ProdQty, 1, @LenString)
WHERE RowID = @RowMin
SELECT @ProdQty =
(CASE ( len( @ProdQty ) - @LenString )
WHEN 0 THEN ''
ELSE right( @ProdQty, len( @ProdQty ) - @LenString - 1 )
END
)
SET @RowMin = @RowMin +1
END
SET @Qty = (select sum(ProdQty)from @TableOfValues
where ProdCode < 99)
RETURN @Qty
END
______________________________________________________________________________Never argue with an idiot; Theyll drag you down to their level and beat you with experience
March 27, 2012 at 11:44 am
Here's what I was able to come up with as a sample solution. I imported your CSV file into a table called SampleData, and queried it this way:
;
WITH CodeSplitter
AS (SELECT tranid,
Sub,
R
FROM dbo.SampleData
CROSS APPLY (SELECT CAST(SUBSTRING([prod-code] + ';', Number,
CHARINDEX(';', [prod-code] + ';', Number) - Number) AS DECIMAL(18,
3)) AS Sub,
ROW_NUMBER() OVER (ORDER BY Number) AS R
FROM dbo.Numbers
WHERE Number <= LEN([prod-code])
AND SUBSTRING(';' + [prod-code], Number, 1) = ';') AS CodeSplitter),
QtySplitter
AS (SELECT tranid,
Sub,
R
FROM dbo.SampleData
CROSS APPLY (SELECT CAST(SUBSTRING([prod-qty] + ';', Number,
CHARINDEX(';', [prod-qty] + ';', Number) - Number) AS DECIMAL(18,
3)) AS Sub,
ROW_NUMBER() OVER (ORDER BY Number) AS R
FROM dbo.Numbers
WHERE Number <= LEN([prod-qty])
AND SUBSTRING(';' + [prod-qty], Number, 1) = ';') AS QtySplitter),
Sums
AS (SELECT CodeSplitter.tranid,
SUM(QtySplitter.Sub) AS ProdQty
FROM CodeSplitter
INNER JOIN QtySplitter
ON CodeSplitter.R = QtySplitter.R
AND CodeSplitter.tranid = QtySplitter.tranid
WHERE CodeSplitter.sub < 99
GROUP BY CodeSplitter.tranid)
SELECT *
FROM dbo.SampleData
INNER JOIN Sums
ON dbo.SampleData.tranid = Sums.tranid
ORDER BY dbo.SampleData.tranid ;
The results from it look correct, but I'm not sure how performant it will be. Very fast on 100 rows, but that changes as scale goes up.
- Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
Property of The Thread
"Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon
March 27, 2012 at 12:05 pm
Thanks for the hints, I never bothered attempting CTE's for this...definitely something to try - In your example though, where is dbo.Numbers coming from?
______________________________________________________________________________Never argue with an idiot; Theyll drag you down to their level and beat you with experience
March 27, 2012 at 12:07 pm
MyDoggieJessie (3/27/2012)
Thanks for the hints, I never bothered attempting CTE's for this...definitely something to try - In your example though, where is dbo.Numbers coming from?
Looks like a tally table. Am I correct?
March 27, 2012 at 12:37 pm
MyDoggieJessie (3/27/2012)
Thanks for the hints, I never bothered attempting CTE's for this...definitely something to try - In your example though, where is dbo.Numbers coming from?
A table of Numbers. Like a Tally table, but correctly named (runs for the hills to avoid Jeff). 🙂
- Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
Property of The Thread
"Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon
March 27, 2012 at 12:56 pm
So just a table with 1 col, values 1 - n?
______________________________________________________________________________Never argue with an idiot; Theyll drag you down to their level and beat you with experience
March 27, 2012 at 1:11 pm
MyDoggieJessie (3/27/2012)
So just a table with 1 col, values 1 - n?
Yep.
I usually start mine at 0 though, because there are uses for that. Easy enough to subtract 1 from the numbers in order to get that range. Either way works. I've even seen numbers tables that went -10,000 through +10,000, for a few obscure uses.
create table dbo.Numbers (
Number int primary key clustered);
GO
insert into dbo.Numbers (Number)
select top 10001 row_number() over (order by t1.object_id)-1
from sys.columns as t1
cross join sys.columns as t2;
I usually put that table in a database called "Common", along with a Calendar table, a table of countries (including ISO-2, ISO-3, natural name [e.g.: Espagna], and English-friendly names [e.g.: Spain]), a table of languages (ISO-2, ISO-3, natural name [e.g.: Espanol], and English-friendly name [e.g.: Spanish]), and a few other commonly useful things.
Then I use either 3-part names, or (more often) synonyms that point at those tables.
Very useful tools.
- Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
Property of The Thread
"Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon
March 27, 2012 at 1:18 pm
By the way, the reason I call it Numbers instead of Tally is the definitions of the words:
Tally:
NOUN
tal·lies plural
1. record of items: a record or account of items such as things bought or points scored
"keep a tally"
2. sports leisure single score: a single score in a contest, e.g. a run or a touchdown
3. identifying label or mark: something that identifies something, e.g. a label or mark
4. counterpart: something that corresponds to or is the counterpart of something else
5. mark representing number: a mark or marks representing a number, especially a set of four short vertical lines crossed by a diagonal fifth line used for numbering things in fives
Number:
c (1): a unit belonging to an abstract mathematical system and subject to specified laws of succession, addition, and multiplication; especially: natural number (2): an element (as p) of any of many mathematical systems obtained by extension of or analogy with the natural number system (3)plural: arithmetic
None of the noun definitions of "tally" really make it clear what the table contains. The given definition of "number" is inherently more clear. Without even seeing the table, you were able to accurately surmise what it contained. Can't do the same with a table called "Tally".
I'd been using Numbers tables for years before I ever heard one called "Tally". But they do both have the same function.
- Gus "GSquared", RSVP, OODA, MAP, NMVP, FAQ, SAT, SQL, DNA, RNA, UOI, IOU, AM, PM, AD, BC, BCE, USA, UN, CF, ROFL, LOL, ETC
Property of The Thread
"Nobody knows the age of the human race, but everyone agrees it's old enough to know better." - Anon
March 27, 2012 at 2:42 pm
I've got to say, your solution is elegant and incredibly slick all at the same time. I can honestly admit I never would have come up with it on my own (as I haven't worked much with CTE's in the past)...nor do I think my brain thinks in that logical manner :hehe:
I am going to adapt your solution to see how well it scales into our data (24+ million rows)...unless you think that the solution I came up with would be okay as well (naturally I trust the experts on this one) Here's what I had come up with prior to your post...it brought the execution time down to about 2-3 seconds parsing through 3400+ records. As a reality check, your code processed it < 1 second...(wow)
CREATE function fx_SumUpExtentsFromProgress(
@ProdCode as varchar(max),
@ProdQty as varchar(max)
)
/*
select dbo.fx_SumUpExtentsFromProgress('50;160;99;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','86.475;2;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0')
*/
RETURNS decimal(18,3)
BEGIN
RETURN (
SELECT
ISNULL(SUM(CAST(qty.item as decimal(14,3))),0)
FROM dbo.fx_DelimitedSplit8K(@ProdCode, ';') cde
INNER JOIN dbo.fx_DelimitedSplit8K(@ProdQty, ';') qty ON
cde.itemnumber = qty.itemnumber
WHERE (
CAST(cde.item as decimal(14,3)) <> 0
AND CAST(qty.item as decimal(14,3)) <> 0)
AND cde.item < 99)
END
/* ACTUAL SELECT STATMENT BELOW */
SELECT
a.[tc-number],
COUNT(DISTINCT a.[tc-card]) as ActiveCards,
SUM(CASE WHEN [trans-code] in (43,53) THEN 0 ELSE 1 END) AS FuelTrans,
SUM( dbo.fx_SumUpExtentsFromProgress(a.[prod-code], a.[prod-qty]) ) qty
FROM dbo.[tmpQTY_LocalFleets_WORK] as a
WHERE
[pos-date] >= '2012/01/01'
and [pos-date] <'2012/01/02'
and [system] = 'PR'
GROUP BY a.[tc-number],
a.[monthName],
a.[Year]
______________________________________________________________________________Never argue with an idiot; Theyll drag you down to their level and beat you with experience
March 27, 2012 at 3:16 pm
GSquared (3/27/2012)
Here's what I was able to come up with as a sample solution. I imported your CSV file into a table called SampleData, and queried it this way:
;
WITH CodeSplitter
AS (SELECT tranid,
Sub,
R
FROM dbo.SampleData
CROSS APPLY (SELECT CAST(SUBSTRING([prod-code] + ';', Number,
CHARINDEX(';', [prod-code] + ';', Number) - Number) AS DECIMAL(18,
3)) AS Sub,
ROW_NUMBER() OVER (ORDER BY Number) AS R
FROM dbo.Numbers
WHERE Number <= LEN([prod-code])
AND SUBSTRING(';' + [prod-code], Number, 1) = ';') AS CodeSplitter),
QtySplitter
AS (SELECT tranid,
Sub,
R
FROM dbo.SampleData
CROSS APPLY (SELECT CAST(SUBSTRING([prod-qty] + ';', Number,
CHARINDEX(';', [prod-qty] + ';', Number) - Number) AS DECIMAL(18,
3)) AS Sub,
ROW_NUMBER() OVER (ORDER BY Number) AS R
FROM dbo.Numbers
WHERE Number <= LEN([prod-qty])
AND SUBSTRING(';' + [prod-qty], Number, 1) = ';') AS QtySplitter),
Sums
AS (SELECT CodeSplitter.tranid,
SUM(QtySplitter.Sub) AS ProdQty
FROM CodeSplitter
INNER JOIN QtySplitter
ON CodeSplitter.R = QtySplitter.R
AND CodeSplitter.tranid = QtySplitter.tranid
WHERE CodeSplitter.sub < 99
GROUP BY CodeSplitter.tranid)
SELECT *
FROM dbo.SampleData
INNER JOIN Sums
ON dbo.SampleData.tranid = Sums.tranid
ORDER BY dbo.SampleData.tranid ;
The results from it look correct, but I'm not sure how performant it will be. Very fast on 100 rows, but that changes as scale goes up.
Just an FYI... that method uses concatenation of delimiters which slows the process down quite a bit. The new DelimitedSplit8K doesn't use concatenation at all and, considering the application against 24 million rows, may prove beneficial for performance.
--Jeff Moden
Change is inevitable... Change for the better is not.
March 27, 2012 at 3:30 pm
Hey Jeff, thanks for that (really)...just not certain how I would work your splitter into what I already have posted a couple posts above...
With using the CTE's that GSquared provided I saw excellent performance on a month's worth of data (approx. 300,000 rows) and ran in under 15 secs. When attempting to run it for a year it still performed well, but took nearly 8.5 minutes to complete.
By comparison my method (which uses your splitter) ran a months worth of data in about 4 minutes (versus the 15 seconds), but I'm certain the way I'm using it was a less optimal one :hehe:
______________________________________________________________________________Never argue with an idiot; Theyll drag you down to their level and beat you with experience
March 27, 2012 at 9:13 pm
MyDoggieJessie (3/27/2012)
Hey Jeff, thanks for that (really)...just not certain how I would work your splitter into what I already have posted a couple posts above...With using the CTE's that GSquared provided I saw excellent performance on a month's worth of data (approx. 300,000 rows) and ran in under 15 secs. When attempting to run it for a year it still performed well, but took nearly 8.5 minutes to complete.
By comparison my method (which uses your splitter) ran a months worth of data in about 4 minutes (versus the 15 seconds), but I'm certain the way I'm using it was a less optimal one :hehe:
I do like to test my code before I post it. The data you attached isn't exactly "readily consumbable" though and I don't have the DDL for the table it would occupy. Any chance of you posting the data and the table DDL according to the first link in my signature line below?
--Jeff Moden
Change is inevitable... Change for the better is not.
March 27, 2012 at 9:34 pm
I thought I posted the DDL in the first post (apologies)
CREATE TABLE [dbo].[tmpQTY_LocalFleets_WORK](
[tranid] [int] NULL,
[ctrl-number] [int] NULL,
[tc-number] [varchar](20) NULL,
[pos-date] [datetime] NULL,
[tc-card] [char](10) NULL,
[trans-code] [int] NULL,
[prod-code] [varchar](160) NULL,
[prod-qty] [varchar](400) NULL,
[Month] [int] NULL,
[MonthName] [nvarchar](50) NULL,
[Year] [int] NULL,
[System] [char](2) NULL
)
The original post has an attachment "100RowsAllColumnsCSV.txt" - this is true data and contains the first 100 rows, if you would an additional amount please let me know! Thanks in advance for your time on this Jeff...it's greatly appreciated!
______________________________________________________________________________Never argue with an idiot; Theyll drag you down to their level and beat you with experience
March 27, 2012 at 9:44 pm
I didn't think about the fact that because the file was an attachment it might keep you from opening it
SELECT '292596778','876887','427512','May 4 2009 12:00AM','0002 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','6.034;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292603321','889939','424678','May 4 2009 12:00AM','0002 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','6.381;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292614411','895384','420068','May 4 2009 12:00AM','0405 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','6.145;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292603790','888556','412670','May 4 2009 12:00AM','0024 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','6.231;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292595107','888381','408906','May 4 2009 12:00AM','0024 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','6.126;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292870868','475858796','428286','May 15 2009 12:00AM','0040 ','53','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','-34.034;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292662449','952087','426364','May 6 2009 12:00AM','0005 ','46','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','25.742;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292672346','945000','406893','May 6 2009 12:00AM','0043 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','30.369;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304847014','590190','405288','May 30 2009 12:00AM','0006 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','19.021;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304847015','594922','427482','May 30 2009 12:00AM','0001 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','21.711;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304847016','595901','427482','May 30 2009 12:00AM','0001 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','40.851;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304847017','597295','403512','May 30 2009 12:00AM','0013 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','22.797;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304847018','597473','426201','May 30 2009 12:00AM','0232 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','23.674;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304847475','596064','406670','May 30 2009 12:00AM','2309 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','11.117;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304847686','490780141','409051','May 30 2009 12:00AM','0082 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.604;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304847687','490833587','409161','May 30 2009 12:00AM','0039 ','31','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','18.573;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304847688','490887919','409161','May 30 2009 12:00AM','0038 ','31','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','15.659;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304847689','490888668','409051','May 30 2009 12:00AM','0062 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','8.243;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304846334','490753859','405447','May 30 2009 12:00AM','1875 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.89;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '303391351','583450','421475','May 29 2009 12:00AM','0346 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','14.293;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304846335','490802518','425517','May 30 2009 12:00AM','3652 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','12.36;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304846336','490842536','405447','May 30 2009 12:00AM','4376 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.93;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304846337','490862030','410116','May 30 2009 12:00AM','0314 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','11.01;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304846338','490879177','405481','May 30 2009 12:00AM','2944 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','13.86;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304846339','490872716','425517','May 30 2009 12:00AM','3655 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','13.12;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304846340','490891476','425517','May 30 2009 12:00AM','1359 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','4.42;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '304846341','490912222','410116','May 30 2009 12:00AM','0534 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.47;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292667921','931854','423611','May 6 2009 12:00AM','0002 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','28.752;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292657332','932942','424851','May 6 2009 12:00AM','0167 ','31','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','28.466;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292660709','932443','419299','May 6 2009 12:00AM','0005 ','46','4;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','26.926;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292671349','947081','418534','May 6 2009 12:00AM','0035 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','32.918;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292661866','936295','420068','May 6 2009 12:00AM','0497 ','31','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','27.795;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292659228','949783','427730','May 6 2009 12:00AM','0089 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','29.789;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292978917','480846033','411985','May 20 2009 12:00AM','0006 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.005;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292977206','480790723','425517','May 20 2009 12:00AM','0761 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.068;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292974647','361439','416175','May 20 2009 12:00AM','0010 ','31','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.19;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292977472','480792791','406516','May 20 2009 12:00AM','0035 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.569;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292994375','357814','425619','May 20 2009 12:00AM','0039 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','8.597;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292988471','363482','402634','May 20 2009 12:00AM','0022 ','46','58;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.06;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '303391352','583822','421475','May 29 2009 12:00AM','0349 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','12.891;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '303391353','584130','421475','May 29 2009 12:00AM','0357 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','14.222;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '303391354','584194','421475','May 29 2009 12:00AM','0345 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','15.557;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '303391355','562005','419054','May 29 2009 12:00AM','0005 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.023;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '303391356','575597','419054','May 29 2009 12:00AM','0004 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','19.527;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292637805','917749','407891','May 5 2009 12:00AM','0010 ','46','61;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','8.704;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292979694','480827916','423178','May 20 2009 12:00AM','0011 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.228;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292981163','354780','429514','May 20 2009 12:00AM','0001 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.83;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292987094','360287','425517','May 20 2009 12:00AM','4678 ','46','61;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.085;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292993210','480895687','425517','May 20 2009 12:00AM','3343 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.386;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292991263','373290','424486','May 20 2009 12:00AM','0006 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.938;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292973284','371007','426776','May 20 2009 12:00AM','0124 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','12.733;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292981533','361851','428210','May 20 2009 12:00AM','0027 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.878;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292971864','361446','415237','May 20 2009 12:00AM','0002 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.472;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292975140','375071','408719','May 20 2009 12:00AM','0002 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.585;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292982204','361572','414049','May 20 2009 12:00AM','0008 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.009;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292985517','371782','420068','May 20 2009 12:00AM','0468 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.722;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292983645','480771749','415041','May 20 2009 12:00AM','0004 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','11.571;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292978535','480814472','405481','May 20 2009 12:00AM','3232 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.213;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292987412','368136','420368','May 20 2009 12:00AM','3282 ','46','61;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.282;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292987416','369272','420368','May 20 2009 12:00AM','3312 ','46','61;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.282;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292978095','480892831','425517','May 20 2009 12:00AM','3513 ','37','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.243;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292979308','480909588','405447','May 20 2009 12:00AM','2754 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.213;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292984731','362836','428473','May 20 2009 12:00AM','0008 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.86;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292975727','480843463','420368','May 20 2009 12:00AM','4767 ','44','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','12.011;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292988871','370724','420368','May 20 2009 12:00AM','3644 ','46','61;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.268;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292987378','371254','403387','May 20 2009 12:00AM','1846 ','46','61;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.316;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292993706','480780310','405447','May 20 2009 12:00AM','3886 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.7;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292996478','359524','429706','May 20 2009 12:00AM','0004 ','46','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.186;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292987558','381918','405218','May 20 2009 12:00AM','0035 ','31','61;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.137;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292969989','378765','416224','May 20 2009 12:00AM','0160 ','48','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.3;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292991883','357373','424406','May 20 2009 12:00AM','0008 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','12.674;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292989980','382191','427214','May 20 2009 12:00AM','0072 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.856;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292971804','360642','425525','May 20 2009 12:00AM','0028 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.643;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292976255','480799216','409571','May 20 2009 12:00AM','0378 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','12.62;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292973961','364224','414881','May 20 2009 12:00AM','0001 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.08;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292984093','358245','412631','May 20 2009 12:00AM','0010 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.916;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292987613','382825','420368','May 20 2009 12:00AM','1775 ','46','61;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.178;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292977701','480790797','405460','May 20 2009 12:00AM','0446 ','31','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','11.317;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292976264','480922853','409571','May 20 2009 12:00AM','0423 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','11.817;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292976226','480807728','420147','May 20 2009 12:00AM','0148 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','12.342;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292992574','359799','426037','May 20 2009 12:00AM','0005 ','46','5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.681;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292989970','380509','427214','May 20 2009 12:00AM','0059 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.791;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292980183','480823074','425898','May 20 2009 12:00AM','0003 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.337;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292986011','361600','421418','May 20 2009 12:00AM','0009 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','11.388;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292973761','369519','426422','May 20 2009 12:00AM','0014 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.845;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292984944','367350','427528','May 20 2009 12:00AM','0002 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.763;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292990056','383371','428396','May 20 2009 12:00AM','0035 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.016;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292972877','480875307','427691','May 20 2009 12:00AM','0018 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.914;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292974664','374531','427693','May 20 2009 12:00AM','0028 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','12.09;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292972195','480808202','428983','May 20 2009 12:00AM','0053 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292992257','480898638','405447','May 20 2009 12:00AM','4461 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.485;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292971802','379513','409900','May 20 2009 12:00AM','0002 ','48','4;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.688;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292979686','480793036','409571','May 20 2009 12:00AM','0430 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','12.165;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292979521','480936389','405447','May 20 2009 12:00AM','4050 ','31','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.439;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292994340','362846','428396','May 20 2009 12:00AM','0021 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','8.007;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292995901','356258','408600','May 20 2009 12:00AM','0041 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.005;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292969872','358248','425898','May 20 2009 12:00AM','0006 ','48','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.17;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292987803','368207','403105','May 20 2009 12:00AM','0033 ','46','61;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','9.455;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292987969','358861','401868','May 20 2009 12:00AM','0008 ','31','61;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','8.915;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
SELECT '292997290','362147','419775','May 20 2009 12:00AM','0012 ','46','2;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','10.232;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','5','May','2009','PR', UNION ALL
______________________________________________________________________________Never argue with an idiot; Theyll drag you down to their level and beat you with experience
March 28, 2012 at 12:44 am
If the extended field only use 4 or less values, perhaps we could use the parsename udf.
My simple bm
ALTER FUNCTION [dbo].[fx_ArrayList_mod]
(
@ProdCode as varchar(max),
@ProdQty as varchar(max)
)
RETURNS decimal(18,3)
BEGIN
DECLARE @qty decimal(18,3)=0.0
select @ProdCode = reverse(replace(replace(@prodcode,'0;',''), ';','.')),
@prodqty = reverse(replace(replace(replace(@prodqty,'0;',''),'.',','),';','.'))
Select @qty = case when cast(isnull(parsename(@prodcode,1),'0') as int) < 99 then cast(reverse(replace(isnull(parsename(@prodqty,1),'0'),',','.')) as decimal(18,3)) else 0.0 end +
case when cast(isnull(parsename(@prodcode,2),'0') as int) < 99 then cast(reverse(replace(isnull(parsename(@prodqty,2),'0'),',','.')) as decimal(18,3)) else 0.0 end +
case when cast(isnull(parsename(@prodcode,3),'0') as int) < 99 then cast(reverse(replace(isnull(parsename(@prodqty,3),'0'),',','.')) as decimal(18,3)) else 0.0 end +
case when cast(isnull(parsename(@prodcode,4),'0') as int) < 99 then cast(reverse(replace(isnull(parsename(@prodqty,4),'0'),',','.')) as decimal(18,3)) else 0.0 end
RETURN @Qty
END
GO
declare @i int=1000000,
@t float = 0.0
while @i > 0
begin
--set @t += 86.475
--set @t += dbo.[fx_ArrayList_IP_9378]('5;165;9;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','86.475;2;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0')
set @t += dbo.[fx_ArrayList_mod]('5;165;99;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0','86.475;2;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0')
set @i -= 1
end
select @t
The _mod version is much faster - restricted to 4 or less embeded values..
Viewing 15 posts - 16 through 30 (of 38 total)
You must be logged in to reply to this topic. Login to reply