【问题标题】:Save All Results to Excel将所有结果保存到 Excel
【发布时间】:2012-07-22 16:07:01
【问题描述】:

我使用 Eclipse 从 Sybase 数据库运行了一个查询。我需要消除重复的条目,但结果有混合类型 - 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-many? distinct 在原始列表上有效,但现在我需要弄清楚如何在一行中显示所有新列值以及每个 id。新列是 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 的问题。

【问题讨论】:

    标签: sql excel sybase


    【解决方案1】:

    无论如何,您可以将多少数据粘贴到 Excel 单元格中是有限的,因此请将您的文本转换为 varchar:

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

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

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

    【讨论】:

    • 谢谢戈登。转换也发生在我身上,我想我使用 convert(varchar(8000), text) 进行了尝试,但我不记得为什么它不起作用。一些文本值很长,所以我把 VARCHAR 做得很大——所以它大约是我迄今为止发现的最大值的 3 倍。明天我会仔细检查一下,看看我是否错过了其他地方。
    • 哎呀。在完成编辑之前,我离开了页面。至于 on 子句......那是一个外部连接 - 当我想要来自两个表的所有数据时。假设我只需要一个内部连接,我错了吗?我不想要 a.id 中不在 b.alt_id 中的任何行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 2022-01-21
    • 2016-08-06
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多