您可以在 SQL 服务器查询中将环境变量设置为整数吗?
can you set environmental variable to round numbers in SQL Server query?
我在 SQL Server 2012 查询中有一堆计算,有点像:
select T1_month
,a.some_value, b.value_to_compare,(select (some_value - value_to_compare)/value_to_compare*100 where value_to_compare != 0) percent_diff
from
(select T1_month
,sum(some_value) some_value
from T1
group by T1_month) a
join
(select T2_month
,sum(value_to_compare) value_to_compare
from T2
group by T2_month) b
on a.T1_month = b.T2_month
order by T1_month;
我在这里使用了一个圆形函数,但我需要添加更多类似的行。有什么办法可以设置一个全局变量来一次性舍入所有列?否则,这只是大量的腿部工作。
round((some_value - value_to_compare)/value_to_compare*100, 2)
我将粘贴到 Excel,但最好在源代码中对其进行舍入,而不必多次使用舍入函数。
这里有一个变通方法,无需为每一行键入 Round() 函数:
SELECT 9.0 / 7 * 100 AS Direct_Query
CREATE TABLE #Table_1 (
[Column_1] [NUMERIC](18, 2) NULL
)
INSERT INTO #Table_1
SELECT 9.0/7 * 100
SELECT Column_1 AS Temp_Table_Formatted FROM #Table_1
编辑:
如果你不能使用 temp table,你可以用 CTE 包装你的查询,然后只是 Round() CTE 的结果,这在像 [=12= 这样的多行编辑器的帮助下很容易做到]:
WITH CTE_Result_To_Format
AS (
SELECT
T1_month
,a.some_value
,b.value_to_compare
,(
SELECT
(some_value - value_to_compare) / value_to_compare * 100
WHERE value_to_compare != 0
)
percent_diff
FROM (
SELECT
T1_month
,SUM(some_value) some_value
FROM T1
GROUP BY
T1_month
) a
JOIN (
SELECT
T2_month
,SUM(value_to_compare) value_to_compare
FROM T2
GROUP BY
T2_month
) b
ON a.T1_month = b.T2_month
)
SELECT
r.T1_month
,ROUND(r.some_value, 2) AS some_value
,ROUND(r.value_to_compare, 2) AS value_to_compare
,ROUND(r.percent_diff, 2) AS percent_diff
FROM CTE_Result_To_Format r
ORDER BY
r.T1_month
我在 SQL Server 2012 查询中有一堆计算,有点像:
select T1_month
,a.some_value, b.value_to_compare,(select (some_value - value_to_compare)/value_to_compare*100 where value_to_compare != 0) percent_diff
from
(select T1_month
,sum(some_value) some_value
from T1
group by T1_month) a
join
(select T2_month
,sum(value_to_compare) value_to_compare
from T2
group by T2_month) b
on a.T1_month = b.T2_month
order by T1_month;
我在这里使用了一个圆形函数,但我需要添加更多类似的行。有什么办法可以设置一个全局变量来一次性舍入所有列?否则,这只是大量的腿部工作。
round((some_value - value_to_compare)/value_to_compare*100, 2)
我将粘贴到 Excel,但最好在源代码中对其进行舍入,而不必多次使用舍入函数。
这里有一个变通方法,无需为每一行键入 Round() 函数:
SELECT 9.0 / 7 * 100 AS Direct_Query
CREATE TABLE #Table_1 (
[Column_1] [NUMERIC](18, 2) NULL
)
INSERT INTO #Table_1
SELECT 9.0/7 * 100
SELECT Column_1 AS Temp_Table_Formatted FROM #Table_1
编辑:
如果你不能使用 temp table,你可以用 CTE 包装你的查询,然后只是 Round() CTE 的结果,这在像 [=12= 这样的多行编辑器的帮助下很容易做到]:
WITH CTE_Result_To_Format
AS (
SELECT
T1_month
,a.some_value
,b.value_to_compare
,(
SELECT
(some_value - value_to_compare) / value_to_compare * 100
WHERE value_to_compare != 0
)
percent_diff
FROM (
SELECT
T1_month
,SUM(some_value) some_value
FROM T1
GROUP BY
T1_month
) a
JOIN (
SELECT
T2_month
,SUM(value_to_compare) value_to_compare
FROM T2
GROUP BY
T2_month
) b
ON a.T1_month = b.T2_month
)
SELECT
r.T1_month
,ROUND(r.some_value, 2) AS some_value
,ROUND(r.value_to_compare, 2) AS value_to_compare
,ROUND(r.percent_diff, 2) AS percent_diff
FROM CTE_Result_To_Format r
ORDER BY
r.T1_month