将所有结果保存到Excel

时间:2012-07-22 16:07:01

标签: sql excel sybase

我已经从Sybase数据库使用Eclipse运行查询。我需要消除重复的条目,但结果有混合类型 - INT和TEXT。 Sybase不会在TEXT字段上做不同的事情。当我保存所有结果并将其粘贴到Excel中时,某些TEXT字段会渗入INT字段列 - 这使Excel -Remove Duplicates很难做到。

我想我可能会为查询创建别名,添加临时表,从别名中选择不同的INT列值,然后再次查询别名,这次包括TEXT值。然后,当我导出数据时,我将其保存到Word中。它看起来像这样:

SELECT id, text
FROM tableA, TableB
WHERE (various joins here...)
AS stuff

CREATE TABLE #id_values
(alt_id CHAR(8) null)

INSERT INTO #id_values
(SELECT DISTINCT id
FROM stuff)

SELECT id, text
FROM stuff a
WHERE EXISTS (SELECT 1 FROM #id_values WHERE b.alt_id = a.id )

如果有一种方法可以在Excel中更好地格式化数据,我就不必在数据库端进行所有这些操作。我在Excel导入对话框中尝试了不同的格式。导入为制表符分隔,空格分隔具有相同的最终结果。

附加信息:我将TEXT转换为VARCHAR但我现在需要一个新列,有时每个id最多有5个条目。 ID - > TYPE是1多? distinct在原始列表中有效,但现在我需要弄清楚如何在每行中显示所有新列值。新列是CHAR(4)。

现在我原来的选择如下:

SELECT DISTINCT id, CONVERT(VARCHAR(8192), text), type_cd
FROM TableA, TableB
...etc

我为每个附加到id的type_cd再次获取多行。我也意识到我不认为我需要'b'。 * alt_id *。前面的别名。

此外,无论我如何格式化查询(TEXT或VARCHAR),Excel都会继续将文本放入id行。也许这不是一个SQL问题,而是Excel,或者Eclipse。

1 个答案:

答案 0 :(得分:1)

无论如何,您可以将多少数据传入Excel单元格,因此请将文本转换为varchar:

SELECT distinct id, cast(text as varchar(255)) as text
FROM tableA, TableB
WHERE (various joins here...)

我使用255,因为这是Excel显示的默认值。您可以在Excel单元格中使用更长的值,但这可能足以满足您的需要。如果没有,只需将值更大。

另外,作为注释,您应该使用正确的连接语法,它使用“on”子句(或“交叉连接”代替逗号)。