SQL 具有 2 个值的 Ouery 参数

SQL Ouery Parameter with 2 values

有谁知道为什么当我试图给出一个包含两个值的参数时我没有从这个查询中得到任何值?比如第一个参数?当我尝试仅使用一个值时它有效吗?

SELECT * FROM amountStatistikFN('1111,2222','2020','10001','1' )

SQL-函数:

ALTER FUNCTION appAmountStatistikFN
(
    @client nvarchar(25),
    @year nvarchar(25),
    @persnr nvarchar(25),--
    @location nvarchar(25)    
)
RETURNS TABLE
AS
RETURN    
(
    SELECT persnr, client, location, activity, year, SUM(amount) AS Summe 
    FROM app_hours 
    WHERE 
    persnr IN (@persnr) AND year=2020 AND location IN (@location) AND client IN (@client)
    GROUP BY persnr, client, location, activity, year       
)
GO

假设您要将列与输入的 CSV 字符串进行比较,您可以使用 LIKE 比较:

ALTER FUNCTION appAmountStatistikFN (
    @client nvarchar(25),
    @year nvarchar(25),
    @persnr nvarchar(25),
    @location nvarchar(25)
)
RETURNS TABLE
AS
RETURN (
    SELECT persnr, client, location, activity, year, SUM(amount) AS Summe 
    FROM app_hours
    WHERE ',' + @persnr + ',' LIKE '%,' + persnr + ',%' AND
          year = 2020 AND
          ',' + @location + ',' LIKE '%,' + location + ',%' AND
          ',' + @client + ',' LIKE '%,' + client + ',%'
    GROUP BY persnr, client, location, activity, year
)
GO

以上答案假定位置和客户端输入也可能是 CSV 字符串。如果不是,那么您可以保留这些标准的代码,就像您最初拥有的那样,并将列与输入参数进行直接比较。