假设有一个简单的表:
CREATE TABLE [dbo].[foo](
[foo_id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[val1_id] [int] NULL,
[val1_amount] [int] NULL,
[val2_id] [int] NULL,
[val2_amount] [int] NULL,
[val3_id] [int] NULL,
[val3_amount] [int] NULL,
[val4_id] [int] NULL
[val4_amount] [int] NULL,
) ON [PRIMARY]
还有一些其他的表是:
CREATE TABLE [dbo].[val](
[val_id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[amount] [int] NOT NULL,
) ON [PRIMARY]
应用程序的用户将从表 val 中选择一个条目,应用程序将以非确定性的方式将 val_id 和 amount 放入 val?_id 和 val?_amount 中(是的,我知道这不好,但我有来处理它)。
鉴于 val_id/amount 可以存储在任何 val?_id/val?_amount 列中,有没有一种方法可以生成输出,该输出将按 foo 表中的 val_id 和 SUM foo 表中的金额值进行分组?注意,如果 val_id 存储在 val1_id 中,金额将始终存储在该行内的 val1_amount 中,但相同的 val_id 可能会出现在不同行的不同 val?_id 中(但金额会在相应的列中)