我有一个如下所示的表格,我必须写一个存储过程,这样当我得到搜索的值时," uid"我必须发布来自" otheruid"的所有数据。和金额,如果任何重复的值存在于" otheruid"我必须在他们身上加入金额。 示例表和输出如下
表: -
输出: - 当我将UID发送到值为1的存储过程时,它应该显示为
所以这个我面临的难以获得输出的任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
不确定这是否完全符合您的要求,因为您的第二张图片让我有点困惑,因为我不确定您是只想要返回一行,还是全部,如果您还需要添加'OtherUID “?无论如何,希望这会让你开始,如果你不需要OtherUID,你可以从程序中删除它。
CREATE PROCEDURE [dbo].[spName]
@intUID INT ,
@intOtherUID INT
AS
BEGIN
SET NOCOUNT ON;
IF(@intUID IS NOT NULL AND @intOtherUID IS NOT NULL)
BEGIN
SELECT [UID],
[OTHERUID],
SUM([AMOUNT]) AS [AMOUNT]
FROM TABLE
WHERE [UID] = @intUID
AND [OTHERUID] = @intOtherUID
GROUP BY [UID],[OTHERUID]
ORDER BY [UID],[OTHERUID]
END
ELSE IF (@intUID IS NOT NULL AND @intOtherUID IS NULL)
BEGIN
SELECT [UID],
[OTHERUID],
SUM([AMOUNT]) AS [AMOUNT]
FROM TABLE
WHERE [UID] = @intUID
GROUP BY [UID],[OTHERUID]
ORDER BY [UID],[OTHERUID]
END
ELSE IF (@intUID IS NULL AND @intOtherUID IS NOT NULL)
BEGIN
SELECT [UID],
[OTHERUID],
SUM([AMOUNT]) AS [AMOUNT]
FROM TABLE
WHERE [OTHERUID] = @intOtherUID
GROUP BY [UID],[OTHERUID]
ORDER BY [UID],[OTHERUID]
END
IF(@intUID IS NULL AND @intOtherUID IS NULL)
BEGIN
SELECT [UID],
[OTHERUID],
SUM([AMOUNT]) AS [AMOUNT]
FROM TABLE
GROUP BY [UID],[OTHERUID]
ORDER BY [UID],[OTHERUID]
END
END
然后,您可以决定传递的ID,以确定返回的内容。 希望它有所帮助
答案 1 :(得分:0)
/ *
声明@rc int 执行@rc = SP_SelectAmount @UID = 2
* /
alter procedure SP_SelectAmount @UID int
作为
开始
选择不同的otheruserid,sum(amount)为TotalAmount,UID来自UOMID WHERE UID = @UID group by otheruserid,UID
端