GroupBy X为X返回多个记录/行

时间:2016-02-18 00:03:09

标签: sql postgresql

我使用以下逻辑。

SELECT  min(Value1),
    UNIQUE_Identifier 
FROM    panel
WHERE (some criteria = 'x')
GROUP BY UNIQUE_Identifier

当我将结果/平面文件导入Excel时,有多个行具有相同的唯一标识符及其关联值。我错过了什么吗?不应该选择min和Group By给每个不同的唯一标识符一个值吗?

一次更新。唯一标识符的数据类型是数字。此外,Unique_Identifiers看起来像这样:1000137210003040。当我将1000137210003040或1000137210003047粘贴到Excel中时,它们都返回为1000137210003040。

1 个答案:

答案 0 :(得分:2)

问题是Excel将数据导入为数字。数字表示为浮点数,尾随数字为圆形。我认为Excel保持15位精度。

强制字符串的一种方法是将值转换为查询中的字符串:

SELECT  min(Value1), 'UQ' || UNIQUE_Identifier 
FROM    panel
WHERE (some criteria = 'x')
GROUP BY UNIQUE_Identifier;

此外,使用单引号前置通常也有效:

SELECT  min(Value1), '''' || UNIQUE_Identifier 
FROM    panel
WHERE (some criteria = 'x')
GROUP BY UNIQUE_Identifier;

或用双引号包装值:

SELECT  min(Value1), '"' || UNIQUE_Identifier || '"'
FROM    panel
WHERE (some criteria = 'x')
GROUP BY UNIQUE_Identifier;

最佳效果可能取决于您如何将数据导入Excel。