SQL查询将列值显示为表中的列名

Posted

技术标签:

【中文标题】SQL查询将列值显示为表中的列名【英文标题】:SQL query to display column values as column name in table 【发布时间】:2019-06-06 17:59:07 【问题描述】:

我有一个来自“问候”表的字段名称“标题”。 UI 中的 Title 字段可能是 FirstName 或 LastName 或两者的组合。

问候表如下:

<!DOCTYPE html>
<html>
<head>
<style>
table, th, td 
  border: 1px solid black;
  border-collapse: collapse;

</style>
</head>
<body>

<h2>Collapsed Borders</h2>
<p>If you want the borders to collapse into one border, add the CSS border-collapse property.</p>

<table style="width:50%">
  <tr>
    <th>Title</th>
  </tr>
  <tr>
    <td>FirstName</td>
  </tr>
  <tr>
    <td>LastName</td>
  </tr>
  <tr>
    <td>nickName</td>
  </tr>
  <tr>
    <td>preferredName</td>
  </tr>
</table>

</body>
</html>

我需要编写一个 SQL 查询来查找只有 Title FirstName、LastName 以及 FirstName 和 LastName 的,并以下表格式显示。 将列名称创建为 FirstName 和 lastName,如果显示则用“Yes”表示,如果不显示则用“No”表示。

<!DOCTYPE html>
<html>
<head>
<style>
table, th, td 
  border: 1px solid black;
  border-collapse: collapse;

</style>
</head>
<body>

<h2>Collapsed Borders</h2>
<p>If you want the borders to collapse into one border, add the CSS border-collapse property.</p>

<table style="width:100%">
  <tr>
    <th>Firstname</th>
    <th>Lastname</th> 
  </tr>
  <tr>
    <td>Yes</td>
    <td>No</td>
  </tr>
  <tr>
    <td>No</td>
    <td>Yes</td>
  </tr>
  <tr>
    <td>Yes</td>
    <td>Yes</td>
  </tr>
</table>

</body>
</html>

我写了下面的查询并获得了“标题”的个别信息,但无法将列值作为表列名格式。您能帮我获取该表格格式的输出数据吗

Select distinct Title from Greeting  WHERE  Title in ('FirstName','LastName') 
Select distinct Title from Greeting  WHERE  Title ='FirstName'
Select distinct Title from Greeting  WHERE  Title = 'LastName'

【问题讨论】:

您能否粘贴您的示例数据库数据以及您希望它看起来像什么 谢谢@JosephDoggie 我只是略读,但您是否在寻找文字字符串 FirstNameLastName?还是那些列值? @barrycarter 这些只是列值而不是文字字符串 那么它们不属于引号。 (某些 SQL 服务器允许您使用反引号,但不能使用单引号) 【参考方案1】:

我尝试了“pivot”,这帮助我获得了该表格格式的输出数据

【讨论】:

以上是关于SQL查询将列值显示为表中的列名的主要内容,如果未能解决你的问题,请参考以下文章

spark将列值作为sql查询执行

如何通过SQL从IBM db2中的查询中获取列名

sql 查询某列值为 a和b

Sql 查询为表中的每个组合返回一条记录

如何仅将列值插入前一千行

sql中的变量定义