【发布时间】:2020-10-04 07:13:24
【问题描述】:
我需要为更多名称设置多个变量,例如@nom2 (@Real2)、@nom3 (@Real3)。
如何在不重复所有代码行(总和)的情况下做到这一点,其中只有人名发生变化?我有一种感觉是动态SQL,但说实话我真的不知道方法。
use Performance
go
declare @nom1 nvarchar(20)
declare @nom2 nvarchar(20)
declare @real1 int
set @nom1 = 'Ricardo'
set @nom2 = 'Pedro'
set @Real1 = (select(
sum (case when [SUPERVISOR] = @nom1 and [FAMILIA] = 'MEOFIBRA' and [EVENTO] = 'VB' then [QUANTIDADE] else 0 end) +
sum (case when [SUPERVISOR] = @nom1 and [FAMILIA] = 'MEOCOBRE' and [EVENTO] = 'VB' then [QUANTIDADE] else 0 end) +
sum (case when [SUPERVISOR] = @nom1 and [FAMILIA] = 'MEOSAT' and [EVENTO] = 'VB' then [QUANTIDADE] else 0 end)) from DOC```
【问题讨论】:
-
这是 SQL Server 还是任何其他数据库?由于未定义@nom2,上述代码将不起作用。您的
[FAMILIA]、[EVENTO]集是否也来自变量?将@nom2、@real2 的代码也放入。 -
这是 sql server。我已经编辑并定义了“nom2”。这些列来自已定义的表,而不是来自变量。 “real2”实际上是相同的代码,我可以复制代码并将“nom1”更改为“nom2”,它会起作用,但这并不是我真正想要的。
标签: sql sql-server variables dynamic