这是设置:
Table 1: table_1
column_id
column_12
column_13
column_14
Table 2: table_2
column_id
column_21
column_22
选择语句:
DECLARE @Variable
INT SET @Variable = 300
SELECT b.column_id,
b.column_12,
SUM(b.column_13) OVER (PARTITION BY b.column_id ORDER BY b.column_12) AS sum_column_13,
@Variable / nullif(SUM(b.column_13) OVER (PARTITION BY b.column_id ORDER BY b.column_12),0) AS divide_var,
(b.column_13*100) / nullif(b.column_14,0) AS divide_column_3
FROM dbo.table_1 b
WHERE b.column_12 IN ('AM','AJ','A-M','A-J','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q');
这很好用,所有公式都有效,并且显示了正确的结果。
b.column_id
被检索
b.column_12
被检索
sum_column_13
等于所有column_13
值的总和(由 分区column_id
)
divide_var
等于一个变量 被潜水sum_column_13
divide_column_13
等于column_13
除以column_14
但是,现在我正在尝试检索@Variable
from table_2
,而不是静态的。
两个表都有一个column_id
,可以将它们链接在一起。然而,这个值并不是唯一的。
的实际数字@Variable
应该来自table_2
; 通过对每个 column_id 的所有值求和column_21
。(类似 sum_column_13 的东西)
我可以让这两件事分开工作,但是当我尝试将它们结合起来(与一个JOIN
或一个额外的SELECT
类)时,一切都会变得疯狂。例如,当使用JOIN
语句时,WHERE
类仅应用于JOIN
语句而不应用于SELECT
语句。我想它应该如何使用column_id
当前的结果SELECT
,然后使用它来检索所需的数据table_2
。
我明白我的解释不是很清楚。所以这是一个 SQLFiddle。正如您所看到的,现在的变量来自将 中的两个值相加table_2
。希望这可以帮助。
谢谢,