我已经使用 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 的问题。