【发布时间】:2015-12-04 06:13:17
【问题描述】:
我有一个视图,我必须在表中插入值。观点如下:
Author_ID Research_Area Category Paper_Count Paper_Year Rank
--------------------------------------------------------------------
677 feature 8 1 2005 1
677 image 11 1 2005 2
677 retrieval 12 1 2005 3
677 semantic 19 1 2007 1
677 feature 8 1 2009 1
677 video 5 2 2013 1
1359 image 11 2 2005 1
1359 adversary 1 1 2005 2
1359 archiving 12 1 2005 3
1359 linear 1 3 2006 1
1359 real time 17 3 2006 2
...
...
表格如下:
id Author_ID Category_2005 Category_2006 Category_2007.....Category_2014 Rank
---------------------------------------------------------------------------------------
我必须根据每个Paper_Year 的排名插入每个Author_ID 并且每个Author_ID 具有三个Category 列的值,一些Author_ID 可能没有一些Paper_Year 的值所以必须为没有Category 值的Paper_Years 插入0,而每个Author_ID 应该只在结果表中显示3 次。
我只为Paper_Year 尝试过这个,即2005:
UPDATE A
SET A.aid = (SELECT vA.Author_ID
FROM Author_Area vA
WHERE vA.Paper_Year = 2005 AND vA.Rank = 1),
A.Category_2005 = (SELECT vA.Category
FROM Author_Area vA
WHERE vA.Paper_Year = 2005 AND vA.Rank = 1)
FROM Author_Areas A
但无法更新表中的任何行。那么在这种情况下我应该使用INSERT 或UPDATE 并且可以使用CASE 语句,如果可以,那么如何使用?
此外,我在结果表中的输出应该是这样的:
id Category_2005 Category_2006 Category_2007 ... Category_2014 Rank
-----------------------------------------------------------------------------
677 8 0 19 0 1
677 11 0 0 0 2
677 12 0 0 0 3
1359 11 1 0 1 1
1359 1 17 0 0 2
1359 12 0 10 0 3
...
...
【问题讨论】:
标签: sql-server view insert sql-update case