【发布时间】:2019-08-16 02:41:33
【问题描述】:
我有一组表格来控制客户每月的预算。这是创建的关系:
现在,我正在尝试创建一个过程,该过程将根据当前登录的用户 ([dbo].[Clientes_Usuarios]) 从表 [dbo].[Ppto_IngresosRubros] 中带来不同的“rubro”字段以及他/她在 [dbo].[Ppto_Master] 中创建的预算
[dbo].[Ppto_IngresosRubros] 中存储了以下数据:
ID IdPpto Rubro
3 4 Ventas desarrollo tecnológico
4 4 Ventas diseño estratégico
5 5 Ventas desarrollo tecnológico
5 5 Ventas diseño estratégico
表[dbo].[Ppto_Master]有如下数据:
ID IdCliente IdModulo FechaPpto
4 1 1 2018-01-01
5 1 1 2018-02-01
到目前为止,我的代码会给我带来想要的结果,但在单独的一组表格中,所以我不能用它来填充转发器(在项目的视图中 - ASP.Net WebForms VB):
而我需要的是:
Rubro
Ventas desarrollo tecnológico
Ventas diseño estratégico
这是我的代码:
DECLARE @usuario varchar(max) = 'eduardo@conceptod.co'
DECLARE @idcliente int
SET @idcliente =
(
SELECT
[W1].[ID]
FROM [dbo].[Clientes_Info_W1] [W1]
INNER JOIN
[dbo].[Clientes_Usuarios] [U]
ON [W1].[ID] = [U].[IdCliente]
WHERE
([U].[CorreoElectronico] = @usuario)
)
DECLARE @MyCursor CURSOR;
DECLARE @idppto int;
BEGIN
SET @MyCursor = CURSOR FOR
(
SELECT
[M].[ID]
FROM [dbo].[Ppto_Master] [M]
WHERE
([M].[IdCliente] = @idcliente)
)
OPEN @MyCursor
FETCH NEXT FROM @MyCursor
INTO @idppto
WHILE @@FETCH_STATUS = 0
BEGIN
(
SELECT
DISTINCT([I].[Rubro])
FROM [dbo].[Ppto_IngresosRubros] [I]
WHERE
([I].[ID] = @idppto)
)
FETCH NEXT FROM @MyCursor
INTO @idppto
END;
CLOSE @MyCursor ;
DEALLOCATE @MyCursor;
END;
帮助!谢谢!
【问题讨论】:
-
我怀疑你是否需要在这里使用这么多游标。样本数据和预期输出会有所帮助。
-
嗯,你的评论让我想到了另一种方法。我通过使用连接实现了它。谢谢
-
@epaezr 。 . .如果不再相关,您应该关闭该问题。
标签: sql sql-server