【发布时间】: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 的问题。
【问题讨论】: