0

I have the following SQL Statement :

SELECT 
   RTRIM(LTRIM(REPLACE(LAGKART.VARENUMMER,CHAR(2),'')))                 AS ItemNo,
   RTRIM(LTRIM(REPLACE(LAGKART.SXSON,CHAR(2),'')))                          AS Season, 
   ISNULL(RTRIM(LTRIM(REPLACE(LAGKART.VARIANT1,CHAR(2),''))),'')            AS Variant1, 
   ISNULL(RTRIM(LTRIM(REPLACE(LAGKART.VARIANT2,CHAR(2),''))),'')            AS Variant2,
   (SELECT * 
    FROM [dbo].[B2BGetSpringFinal] ( LAGKART.VARENUMMER, 
                                    LAGKART.VARIANT1,
                                    LAGKART.VARIANT2
                                  )) AS SpringAvailable
FROM 
   LAGKART

But I get this error :

Msg 170, Level 15, State 1, Line 8
Incorrect syntax near '.'.

But if I call the function with fixed values :

SELECT 
   RTRIM(LTRIM(REPLACE(LAGKART.VARENUMMER,CHAR(2),'')))                 AS ItemNo,
   RTRIM(LTRIM(REPLACE(LAGKART.SXSON,CHAR(2),'')))                          AS Season, 
   ISNULL(RTRIM(LTRIM(REPLACE(LAGKART.VARIANT1,CHAR(2),''))),'')            AS Variant1, 
   ISNULL(RTRIM(LTRIM(REPLACE(LAGKART.VARIANT2,CHAR(2),''))),'')            AS Variant2,
   (SELECT * 
    FROM [dbo].[B2BGetSpringFinal] ( '6261', 
                                     'Black',
                                     'S'
                                   )) AS SpringAvailable
FROM 
   LAGKART   

I get the desired result.

Any ideas?

Br Mads

BateTech
  • 5,780
  • 3
  • 20
  • 31
Dauer
  • 3
  • 1
  • what dialect is that? TSQL? it looks kind of whacky but not nuts enough to bt mysql. anway I'm pretty sure you can't pull result columns into subselects like that.either maybe you want a CTE? – Jasen Dec 06 '14 at 07:42
  • It's T-SQL Think your are right that i can't use result columns in subselects. – Dauer Dec 06 '14 at 07:46

3 Answers3

0

if your server supports CTEs you could try this one:

WITH a as (
SELECT VARENUMMER,
RTRIM(LTRIM(REPLACE(LAGKART.VARENUMMER,CHAR(2),'')))                    AS ItemNo,
RTRIM(LTRIM(REPLACE(LAGKART.SXSON,CHAR(2),'')))                         AS Season, 
ISNULL(RTRIM(LTRIM(REPLACE(LAGKART.VARIANT1,CHAR(2),''))),'')           AS Variant1, 
ISNULL(RTRIM(LTRIM(REPLACE(LAGKART.VARIANT2,CHAR(2),''))),'')           AS Variant2,
FROM LAGKART
)
select *,
(SELECT * FROM [dbo].[B2BGetSpringFinal] ( a.VARENUMMER, 
                                           a.VARIANT1,
                                           a.VARIANT2
                                        ))                              AS SpringAvailable
from a ;
Jasen
  • 11,837
  • 2
  • 30
  • 48
0

You can use APPLY (CROSS or OUTER) to pass column(s) value(s) as arguments to a function:

SELECT RTRIM(LTRIM(REPLACE(LAGKART.VARENUMMER,CHAR(2),'')))  AS ItemNo,
        RTRIM(LTRIM(REPLACE(LAGKART.SXSON,CHAR(2),''))) AS Season, 
        ISNULL(RTRIM(LTRIM(REPLACE(LAGKART.VARIANT1,CHAR(2),''))),'') AS Variant1, 
        ISNULL(RTRIM(LTRIM(REPLACE(LAGKART.VARIANT2,CHAR(2),''))),'') AS Variant2,
        SpringAvailable.*
FROM LAGKART
CROSS APPLY 
(
    SELECT * 
    FROM [dbo].[B2BGetSpringFinal] ( LAGKART.VARENUMMER, LAGKART.VARIANT1,LAGKART.VARIANT2 )
) AS SpringAvailable
gotqn
  • 42,737
  • 46
  • 157
  • 243
0

In SQL Server 2000, Only constants and @local_variables can be passed to table-valued functions. In SQL 2005 and greater this was fixed. You could try using a scalar function to get the SpringAvailable column value instead, or look at upgrading to a newer SQL Server version.

BateTech
  • 5,780
  • 3
  • 20
  • 31
  • I can go from SQL 2000 to SQL Express 2005 for free, so that will be the soloution. Thanks! – Dauer Dec 06 '14 at 18:44