在SQL中将一行数据分发到两行

在SQL中将一行数据分发到两行,sql,sql-server-2008,Sql,Sql Server 2008,我有下表。有没有一种好方法可以将它们重新组合,使组“a+b”重复计数并添加到组“a”和“b”中 Group Amount a 100 b 200 c 300 a+b 400 结果将是: Group Amount a 500 b 600 c 300 这很可怕,但您可以对匹配的组执行子查询 SELECT GroupId, Amount + ISNULL( (SELECT SUM(Amount) FROM MyGroup

我有下表。有没有一种好方法可以将它们重新组合,使组“a+b”重复计数并添加到组“a”和“b”中

Group Amount
  a     100
  b     200
  c     300
 a+b    400
结果将是:

Group Amount
  a    500
  b    600
  c    300

这很可怕,但您可以对匹配的组执行子查询

SELECT GroupId,
Amount + ISNULL(
  (SELECT SUM(Amount) FROM MyGroups t2
   WHERE t2.GroupId <> t1.GroupId
   AND t2.GroupId LIKE '%' + t1.GroupId + '%'), 0)
FROM MyGroups t1
WHERE t1.GroupId NOT LIKE '%+%'

我用一个子查询和一个左连接输入了一个答案,很高兴能发布它,直到我意识到你的答案更加优雅和高效。做得好!