使用SQL将单元格值显示为列名

时间:2011-12-17 06:55:47

标签: sql database sql-server-2008 pivot pivot-without-aggregate

我在数据库中有以下表格:

Name        Grade       Subject

Ami           HD         Java
Ami           D          C++
Bec           D          Java
Bec           P          C++

是否可以仅使用SQL以下面给出的格式显示它:

Name       Java       C++

Ami        HD         D
Bec        D          P

我努力了,但找不到解决方案。

谢谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT
  Name, 
  MAX(CASE Subject WHEN 'C++'  THEN Grade END) 'C++',
  MAX(CASE Subject WHEN 'Java' THEN Grade END) 'Java'
FROM @test
GROUP BY Name;

您的表的问题在于您没有可以聚合列的数值,因此您可以使用Min或max作为聚合。 您可以在数据资源管理器here

中查看操作中的查询