在单行中追加查询结果

时间:2012-07-06 08:13:56

标签: sql informix 4gl

我正在将查询结果卸载到文件中。我需要将结果记录显示在一行中。例如,

unload to file.unl select col from table where col = "test";

生成的file.unl就像

test|
test|
....
test|

但我想得到的是,

test|test|test|....|test|

感谢任何指导或想法。

由于

2 个答案:

答案 0 :(得分:2)

您可能知道可以在SQL中或通过DBDELIMITER环境变量声明DELIMITER "|"。据我所知,没有办法将默认的记录终止符从NEWLINE更改为其他任何内容。

所以我怀疑你需要编写一个迭代结果的自定义函数,然后将它们附加到一个变量中,然后将其写入文件,或者编写一个单独的脚本,通过{{1}调用将数据从行转向列,例如:

RUN

我假设你在Unix上运行并且有方便的perl。如果不这样做,您可能会发现迭代器建议比在Windows上安装perl更加实用,特别是如果您对运行此代码的计算机的控制有限。

<强>更新

我的4GL非常生疏,但我正在描述一些非常基本的内容,例如:

UNLOAD TO file.unl SELECT col FROM table WHERE ...;    
RUN "/usr/bin/perl -ni -e 'chomp; print' file.unl";

自从我写了4GL之后已经15年了,所以请把它当作伪代码。可能有更好的方法直接写入文件,老实说我记不起来了。

答案 1 :(得分:1)

创建表#Table(     PKey INT主键,     Field VARCHAR(10) )

INSERT INTO #Table 选择1,'ABS1'UNION ALL 选择2,'ABS2'UNION ALL 选择3,'ABS3'

DECLARE @results VARCHAR(MAX)=''

选择     @results = COALESCE(         @results +'|' +场,         @Results     ) 来自#Table

SELECT @results