単純なテーブルがあるとします。
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 と val?_amount に val_id と amount を配置します (はい、これが良くないことはわかっていますが、それに対処する)。
val_id/amount が val?_id/val?_amount 列のいずれかに格納される可能性がある場合、foo テーブルの val_id でグループ化し、foo テーブルの amount 値を合計する出力を生成する方法はありますか? val_id が val1_id に格納されている場合、金額は常にその行内の val1_amount に格納されますが、同じ val_id が別の行の別の val?_id に表示される場合があります (ただし、金額は対応する列に表示されます)。