Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 一个结果中有多个结果,应用程序限制_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 一个结果中有多个结果,应用程序限制

Sql 一个结果中有多个结果,应用程序限制,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在使用一个名为Case Aware的法律软件。您可以进行有限的sql搜索,我很幸运地获得了区分大小写的功能,可以从数据库中提取特定的值。我的问题是,我需要创建一个返回多个值的sql搜索,但是区分大小写的软件只接受一个结果作为答案。如果我的查询生成一个列表,它将只识别顶级值。这是我无法绕过的软件限制 我最基本的搜索是: select rate From case_fin_info where fin_info_id = 7 and rate!=0 这应该会生成一个3-15个比率的列表,当直接

我正在使用一个名为Case Aware的法律软件。您可以进行有限的sql搜索,我很幸运地获得了区分大小写的功能,可以从数据库中提取特定的值。我的问题是,我需要创建一个返回多个值的sql搜索,但是区分大小写的软件只接受一个结果作为答案。如果我的查询生成一个列表,它将只识别顶级值。这是我无法绕过的软件限制

我最基本的搜索是:

select rate
From case_fin_info
where fin_info_id = 7 and rate!=0
这应该会生成一个3-15个比率的列表,当直接从数据库运行搜索时会这样做。但是,当运行遍历Case-Aware时,只有表中的第一个速率将拉动。我需要通过Case-Aware提取值,因为有了Case-Aware,我可以自动将结果插入模板。我工作的地方每天产生数百甚至数千个,所以手动操作是一个B$@%

我需要找到一种方法将搜索中的所有值合并为一个值。我无法使用XML Case Aware,因为它会给出错误,并且我无法创建临时表。同样,如果可能的话,我还需要在每个值之间插入一个手动返回,以便在我将此信息拉入的文档中将它们分开

Case Aware没有任何用户手册,您为支持付费我们有,但我怀疑他们的能力。我能够轻松地创建他们过去告诉我不可能的查询。我希望这是其中一次

整合

Addtl供参考:


我目前有一个难题:从数据库中单独提取每个值,即使它为null,并将每个值放入文档中的表中。30个单独的搜索它可以工作,但是生成文档需要更长的时间,而且还留下了大量的空白。有些情况下有3个值,大多数有5-10个,但我们有多达30个区域的速率,因为每个月我们都需要它们。这使得模板看起来非常垃圾,但这不会影响生成文档的律师,因为他们看不到它,但每次生成表时,他们都必须删除所有的空列。随着我们每天做的文档数量的增加,1这会很耗时,2这假设律师和律师助理知道如何从word中的表格中提取行。

我有一个类似的查询要在我的应用程序中实现。这应该行得通

DECLARE @Rate VARCHAR(8000) 
SELECT @Rate = COALESCE(@Rate + ', ', '') + rate 
From case_fin_info where fin_info_id = 7    and rate!=0;

首先,我对不得不使用如此糟糕的软件表示哀悼

其次,这里有一个可能的解决方案,假设使用SQL Server:

1从案例fin info中执行SELECT COUNT*,其中fin info id=7,费率为0。在客户端应用程序中存储结果行数

2在你的客户端应用程序中,为i=0做一个测试;i
WITH OrderedRates AS
(
   SELECT Rate, ROW_NUMBER() OVER (ORDER BY <table primary key> ASC) AS 'RowNum'
   FROM case_fin_info WHERE fin_info_id = 7 AND rate <> 0
)
SELECT Rate FROM OrderedRates WHERE RowNum = <count>

根据需要替换中的内容。基本上,您在客户端应用程序中获取行数,然后一次获取一行。这是非常低效的,但是如果只有15行,这应该不会太糟糕。

这里有一个查询,它将在单个列中返回一个结果。它假设您的手动返回是CR+LF。而且,您需要扩展它来处理所有15种费率

SELECT max(Rate1) + CHAR(13) + CHAR(10)
    + max(Rate2) + CHAR(13) + CHAR(10)
    + max(Rate3) + CHAR(13) + CHAR(10)
    + max(Rate4) + CHAR(13) + CHAR(10)
    + max(Rate5) + CHAR(13) + CHAR(10)
FROM (
    SELECT CASE RateID WHEN 1 THEN CAST(rate as varchar) END AS Rate1,
        CASE RateID WHEN 2 THEN CAST(rate as varchar) END AS Rate2,
        CASE RateID WHEN 3 THEN CAST(rate as varchar) END AS Rate3,
        CASE RateID WHEN 4 THEN CAST(rate as varchar) END AS Rate4,
        CASE RateID WHEN 5 THEN CAST(rate as varchar) END AS Rate5
    FROM
        (
        select RateID, rate From case_fin_info where fin_info_id = 7 and rate!=0
        ) as r
    ) as Rates

+1因为这很可能是最容易实现的,并且仍然表现得相当好。。。希望该软件允许声明变量:感谢您的快速响应。我试过用这个,但它不太喜欢。它返回0个结果。它似乎被第一个@RateNo Lieven阻塞了,显然不是。rate列的数据类型是什么?连接时,请尝试将rate转换为varcharRate是一个数字。我怎样才能转换成瓦查尔?我想我已经在这个问题上被打败了。。。我无法存储行数的结果。软件所做的是将结果保存在标签中。从案例生成文档时,模板中有标记,它从标记引用的数据库中提取任何值并生成.doc。