浮点值 UNION ALL 查询
Float values UNION ALL query
我有两个 ms sql 服务器表,其中的列类型为 float(非空)。
当我在这两个表中执行 union ALL 时
SELECT [float_column],
Min(sourcename) AS ExistsInFile
FROM (SELECT [float_column],
'File 1' AS SourceName
FROM table1
WHERE column1 = 'abc'
UNION ALL
SELECT [float_column],
'File 2' AS SourceName
FROM table2
WHERE column1 = 'abc') x
GROUP BY [float_column]
HAVING Count(DISTINCT sourcename) <> 2
它给了我以下输出,但它应该没有任何差异,因为两个值相同。
float_Column | ExistsInFile
-53590187.62 File 2
-53590187.62 File 1
这是因为float类型吗?如有任何帮助,我们将不胜感激!
是的,问题是浮动。这里的问题不是union all
。问题是 group by
.
浮点数可以在表示数字的最小位上有所不同——您看不出其中的差别。因此,对于您的问题,只需将所有内容转换为小数:
SELECT CAST([float_column] as DECIMAL(12, 2),
Min(sourcename) AS ExistsInFile
FROM (SELECT [float_column],
'File 1' AS SourceName
FROM table1
WHERE column1 = 'abc'
UNION ALL
SELECT [float_column],
'File 2' AS SourceName
FROM table2
WHERE column1 = 'abc') x
GROUP BY CAST([float_column] as DECIMAL(12, 2)
HAVING Count(DISTINCT sourcename) <> 2 ;
我有两个 ms sql 服务器表,其中的列类型为 float(非空)。
当我在这两个表中执行 union ALL 时
SELECT [float_column],
Min(sourcename) AS ExistsInFile
FROM (SELECT [float_column],
'File 1' AS SourceName
FROM table1
WHERE column1 = 'abc'
UNION ALL
SELECT [float_column],
'File 2' AS SourceName
FROM table2
WHERE column1 = 'abc') x
GROUP BY [float_column]
HAVING Count(DISTINCT sourcename) <> 2
它给了我以下输出,但它应该没有任何差异,因为两个值相同。
float_Column | ExistsInFile
-53590187.62 File 2
-53590187.62 File 1
这是因为float类型吗?如有任何帮助,我们将不胜感激!
是的,问题是浮动。这里的问题不是union all
。问题是 group by
.
浮点数可以在表示数字的最小位上有所不同——您看不出其中的差别。因此,对于您的问题,只需将所有内容转换为小数:
SELECT CAST([float_column] as DECIMAL(12, 2),
Min(sourcename) AS ExistsInFile
FROM (SELECT [float_column],
'File 1' AS SourceName
FROM table1
WHERE column1 = 'abc'
UNION ALL
SELECT [float_column],
'File 2' AS SourceName
FROM table2
WHERE column1 = 'abc') x
GROUP BY CAST([float_column] as DECIMAL(12, 2)
HAVING Count(DISTINCT sourcename) <> 2 ;