(警告:新手警报) 我必须计算生成视图的子部分以及视图本身。
有可能吗?
例如,这是来自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
...等所有计数排列。
答案 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)
查看Subqueries和Count功能。您可以将查询包装在另一个查询中,并使用聚合来计算,求和甚至对结果执行标准偏差。
答案 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