我正在将查询结果卸载到文件中。我需要将结果记录显示在一行中。例如,
unload to file.unl select col from table where col = "test";
生成的file.unl就像
test|
test|
....
test|
但我想得到的是,
test|test|test|....|test|
感谢任何指导或想法。
由于
答案 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