Sql 一个结果中有多个结果,应用程序限制
我正在使用一个名为Case Aware的法律软件。您可以进行有限的sql搜索,我很幸运地获得了区分大小写的功能,可以从数据库中提取特定的值。我的问题是,我需要创建一个返回多个值的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个比率的列表,当直接
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。