2014-09-03 69 views
-1
name  roll     vote total vote  status 

aaa  Administrator    1 2   Feedback Received 
aaa  HR Support Staff   1 2   Feedback Received 
dev  Administrator    1 2   Shortlisted 
dev  HR Support Staff   1 2   Shortlisted 
raj  Administrator    1 1   Feedback Received 
rajesh HR Support Staff   2 2   Shortlisted 

需要显示像PIVOT操作

Name  HR Support Staff  Administrator Total Vote  Status 

aaa   1     1    2   Feedback Recived 

如何以这种方式显示?

+1

你是如何输出的数据?在UI和/或报告层中,透视比在SQL中更容易。大多数网格和报告工具都支持声明式动态旋转,而SQL则需要静态旋转(或动态SQL,这很难开发和调试)。 – 2014-09-03 13:26:14

回答

1

这将是一个PIVOT方法是:

select [name], [Administrator], [HR Support Staff], [total vote], [status] 
from Table1 
pivot (
    min([vote]) 
    for [roll] in ([Administrator], [HR Support Staff]) 
) p 

Working SqlFiddle

+0

感谢它的工作...... – Kasirajan 2014-09-03 13:54:21

+0

只是对OP的一些想法:这张桌子上是否有限制?如果不是,Min func可以用AVG替换,Column Vote可以替换DECIMAL。另外,应该是角色? – nshah 2014-09-03 14:05:40

0

这里的细节很稀少。你可以使用PIVOT或者你可以做一个交叉表。如果这些值是静态的,那么使用交叉表可以做到这一点。

select name 
    , SUM(case when roll = 'HR Support Staff' then 1 end) as HRSupportStaff 
    , SUM(case when roll = 'Administrator' then 1 end) as Administrator 
    , MAX(TotalVote) as TotalVote 
    , Status 
from YourTable 
group by name, Status 
+0

值将是动态的 – Kasirajan 2014-09-03 13:37:22

+0

好的。所以你需要做一个动态数据透视表或交叉表。如果你看看谷歌,你会发现很多方法来做动态枢轴和动态交叉表。 – 2014-09-03 13:38:37

+0

thnx为响应,它的工作,但它显示名称多次... – Kasirajan 2014-09-03 13:43:51