需要一个查询来显示给定的网格

时间:2014-09-04 06:23:21

标签: sql sql-server sql-server-2008

单位表

Unit    Type    PrimaryCode SecondaryCodes
UnitA   L   20  30,90
UnitB   B   10  25,35,45

L - 位置; B - 业务;  如果type = L,那么主代码将被视为位置和辅助代码作为业务;

如果type = B,那么主代码将被视为业务和辅助代码作为位置;

帐户表

Account Location    Business    Amount
AC1 20  30  100
AC2 20  90  50
AC3 25  10  50
AC4 35  10  25
AC5 45  10  100

现在,我需要一个查询来显示如下的网格..

Unit    Sum of Amount
UnitA   150
UnitB   175

1 个答案:

答案 0 :(得分:0)

很抱歉,但我现在不能想到任何事情"更好"。

  select 'A' as Unit, sum(Amount) as [Sum of Amount] FROM [Accounts Table] group by Location having count(Location) >1
  union all
  select 'B' as Unit, sum(Amount) as [Sum of Amount] FROM [Accounts Table] group by Business having count(Business) >1

编辑1 我看到我没有考虑单位表。我会解决它。

编辑2 ......实际上,我无法给出更好的回应。 我无法连接这些表 - 除非主代码和辅助代码形成唯一的对。 您需要在表[帐户表]中使用UnitId或UnitName。然后,这可以是UnitID分组。