当存储过程MSSQl中有相同数据的两个或多个值时,如何编写用于在表中添加值的存储过程

时间:2017-04-28 09:47:35

标签: mysql sql sql-server

我有一个如下所示的表格,我必须写一个存储过程,这样当我得到搜索的值时," uid"我必须发布来自" otheruid"的所有数据。和金额,如果任何重复的值存在于" otheruid"我必须在他们身上加入金额。 示例表和输出如下

表: - Table

输出: - 当我将UID发送到值为1的存储过程时,它应该显示为

check here for output image

所以这个我面临的难以获得输出的任何人都可以帮我解决这个问题。

2 个答案:

答案 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