显示SQL选择以及自身的计数?

时间:2015-11-20 19:57:35

标签: sql count db2

(警告:新手警报) 我必须计算生成视图的子部分以及视图本身。

有可能吗?

例如,这是来自SQL select:

的生成视图
Client Type      Year
8963   Rural     2012
9044   City      2013
8963   Rural     2014
5145   Rural     2014
5145   City      2012

我想要显示的是:

Client Type      Year  CountofRural2012 CountofCity2012 CountofRural2013
8963   Rural     2012  1                   1                  0
9044   City      2013
8963   Rural     2014
5145   Rural     2014
5145   City      2012

...等所有计数排列。

3 个答案:

答案 0 :(得分:1)

首先,我建议你研究一下像pivot这样的功能。

https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/pivoting_tables56?lang=en

其次,如果您要创建的字段是预先知道的(意味着,您希望为特定年份创建字段),则可以尝试对案例字段进行求和/计算。

Select client, type, year,
       sum(case when type='Rural' and year=2012 then 1 else 0 end) countOfRural2012
from YOUR_TABLE
Group by client, type, year

答案 1 :(得分:0)

查看SubqueriesCount功能。您可以将查询包装在另一个查询中,并使用聚合来计算,求和甚至对结果执行标准偏差。

答案 2 :(得分:0)

阿尔迪亚,

这是在不创建新表的情况下执行此操作的方法

select [Client], [Type], [Year],
(Select COUNT([Year]) From PTable  where [Year] = 2012 and [Type] = 'Rural') [CountofRural2012],
(Select COUNT([Year]) From PTable  where [Year] = 2012 and [Type] = 'City') [CountofCity2012],
(Select COUNT([Year]) From PTable  where [Year] = 2013 and [Type] = 'Rural')[CountofRural2013]
from PTable

这是现场演示https://data.stackexchange.com/stackoverflow/query/397150

希望它有所帮助。

运行上面的查询后,只需像这样手动更新

  Update PTable Set [CountofRural2012] = '' where Client <> 8963
  Update PTable Set [CountofCity2012] = '' where Client <> 8963
  Update PTable Set [CountofRural2013] = '' where Client <> 8963