向 SQL 查询添加简单计算
Adding Simple Calculations to SQL Query
我想添加一些列来计算查询中的列。我尝试将它添加到查询的末尾,但是当我命名该列时它在“AS”处出错。此查询在没有计算步骤的情况下工作,所以可能是因为计算应该在其他地方完成?
提前感谢大家的帮助!
SELECT *
FROM (SELECT DISTINCT
col_1,
col_2,
col_3,
col_x
CASE
WHEN col_1 = '' THEN col_x
ELSE col_2
END AS FINISHEDCASE,
col_1,
col_2,
col_3,
col_x,
(calc_1*(1-(calc_2/100)) AS calc_column
[**Desire to
add several columns that reference selected columns, ie,col_1,
col_2, etc. onto the
end of the query**]
FROM TABLE_NAME
LEFT JOIN TABLE_NAME_2
ON col_a = col_b
)as subquery
WHERE Fieldname NOT IN ('D')
查询的预期结果应如下所示
col_1、col_2、col_3、col_x、calc_column
运行 查询现在在 'AS' 子句处给出错误消息。
很多猜测你真正打算做什么,但据我了解,你喜欢计算两个计算值(calc_1
和 calc_2
),然后将它们用作中间值结果进一步计算列 (calc_column
)。可以这样做:
WITH Calculated AS (SELECT col_1, col_2, col_3, col_x, (col_1 + col_2) AS calc_1, (col_3 * col_4) AS calc_2 FROM TABLE_NAME)
SELECT col_1, col_2, col_3, col_x, (calc_1*(1-(calc_2/100))) AS calc_column FROM Calculated
另一种方法是将 CROSS APPLY 与 VALUES 结合使用。然后可以返回每个计算:
SELECT ...
FROM ...
CROSS APPLY (VALUES (formula1, formula2)) AS c(calc_1, calc_2)
WHERE ...
然后您可以根据需要在查询的其他任何地方使用这些计算。您甚至可以堆叠 CROSS APPLY 来计算变量,这些变量随后可用于以下 CROSS APPLY 语句。例如:
SELECT ...
FROM ...
CROSS APPLY (VALUES (col1 + col2, col3 + col4)) AS v(a, b)
CROSS APPLY (VALUES (v.a * v.b)) AS e(c)
我想添加一些列来计算查询中的列。我尝试将它添加到查询的末尾,但是当我命名该列时它在“AS”处出错。此查询在没有计算步骤的情况下工作,所以可能是因为计算应该在其他地方完成?
提前感谢大家的帮助!
SELECT *
FROM (SELECT DISTINCT
col_1,
col_2,
col_3,
col_x
CASE
WHEN col_1 = '' THEN col_x
ELSE col_2
END AS FINISHEDCASE,
col_1,
col_2,
col_3,
col_x,
(calc_1*(1-(calc_2/100)) AS calc_column
[**Desire to
add several columns that reference selected columns, ie,col_1,
col_2, etc. onto the
end of the query**]
FROM TABLE_NAME
LEFT JOIN TABLE_NAME_2
ON col_a = col_b
)as subquery
WHERE Fieldname NOT IN ('D')
查询的预期结果应如下所示
col_1、col_2、col_3、col_x、calc_column
运行 查询现在在 'AS' 子句处给出错误消息。
很多猜测你真正打算做什么,但据我了解,你喜欢计算两个计算值(calc_1
和 calc_2
),然后将它们用作中间值结果进一步计算列 (calc_column
)。可以这样做:
WITH Calculated AS (SELECT col_1, col_2, col_3, col_x, (col_1 + col_2) AS calc_1, (col_3 * col_4) AS calc_2 FROM TABLE_NAME)
SELECT col_1, col_2, col_3, col_x, (calc_1*(1-(calc_2/100))) AS calc_column FROM Calculated
另一种方法是将 CROSS APPLY 与 VALUES 结合使用。然后可以返回每个计算:
SELECT ...
FROM ...
CROSS APPLY (VALUES (formula1, formula2)) AS c(calc_1, calc_2)
WHERE ...
然后您可以根据需要在查询的其他任何地方使用这些计算。您甚至可以堆叠 CROSS APPLY 来计算变量,这些变量随后可用于以下 CROSS APPLY 语句。例如:
SELECT ...
FROM ...
CROSS APPLY (VALUES (col1 + col2, col3 + col4)) AS v(a, b)
CROSS APPLY (VALUES (v.a * v.b)) AS e(c)