gpt4 book ai didi

sql - SQL 问题,在报表生成器中使用具有多个值的参数

转载 作者:行者123 更新时间:2023-12-04 05:41:05 25 4
gpt4 key购买 nike

有一个关于 MS SQL Server 的查询。
我将不得不对细节含糊其辞,并更改或删除某些部分,因为我无法确定信息是否保密,但我已经编写了一个查询,用于搜索跨学期培训单元的学生,使用报表生成器 2.0:
DS_spanning:(主数据集)

SET DATEFORMAT dmy

SELECT
FIRST_NAME AS FirstName
,LAST_NAME AS LastName
,START_DATE AS StartDate
,END_DATE AS EndDate
,UNIT_TYPE AS UnitType
,TP_FULLNAME AS TrainingPost
,SEMESTER_YEAR AS SemesterYear
FROM AA_GPR_TU

WHERE TU_START_DATE < @checkdate //Checkdate returns the end date of the
AND TU_END_DATE > @checkdate // selected semester

ORDER BY TU_START_DATE
PM_checkdate:(@checkdate 链接到的数据集)
SET DATEFORMAT dmy
SELECT
new_semesterenddate
,new_semesterstartdate
,new_semesternumber
,new_semesteryear
,new_name
FROM
FilteredNew_rtpsemester

WHERE new_semesteryear >= 2004

ORDER BY new_semesterenddate DESC
现在,这很好用并且可以完成我想要的工作,但是我一次只能选择一个学期。当我尝试在@checkdate 的报告参数属性下勾选“允许多个值”框时,运行选择超过一个学期的报告给我这个错误:

Incorrect syntax near ','.

Query execution failed for dataset 'DS_spanning'.

An error has occurred during report processing.

An error occurred during local report processing.**


(',' 的问题是因为当我为报告选择多个值时,它会将它们作为 data1、data2、data3... 等提供给 @checkdate。)
我的参数写入方式是否有问题,或者我是否需要更改查询以适应多个值?
我能想到的最简单的方法是在部分中使用 IN 语句

WHERE TU_START_DATE < @checkdate AND TU_END_DATE > @checkdate


但我不确定如何将 IN 语句与 and 结合使用操作数。
大家有什么想法吗?

最佳答案

我有很多次选择多值问题,在互联网上搜索了几个小时后,我发现了这个问题,它很有效。

首先创建这个函数调用拆分到您运行查询的数据库中。

USE [DatabaseName]
GO

/****** Object: UserDefinedFunction [dbo].[split] Script Date: 07/19/2013 10:49:08 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION [dbo].[split](
@delimited NVARCHAR(MAX),
@delimiter NVARCHAR(100)
) RETURNS @t TABLE (id INT IDENTITY(1,1), val NVARCHAR(MAX))
AS
BEGIN
DECLARE @xml XML
SET @xml = N'<t>' + REPLACE(@delimited,@delimiter,'</t><t>') + '</t>'

INSERT INTO @t(val)
SELECT r.value('.','varchar(MAX)') as item
FROM @xml.nodes('/t') as records(r)
RETURN
END

然后在 WHERE 子句中使用它的方式是通过使用这行代码确保更改单词列和参数保留单词 val 因为这是函数需要的
WHERE [COLUMN] IN (SELECT val FROM dbo.split(@Parameter, ','))

关于sql - SQL 问题,在报表生成器中使用具有多个值的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11238292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com