SQL 重命名 - 从另一列的输入重命名列

  • 本文关键字:重命名 一列 SQL sql join
  • 更新时间 :
  • 英文 :


有没有办法从输入到另一列的名称重命名列?

目前,我有一段连接在一起的代码,我正在编写最终的 SELECT 语句,该语句将显示我想要的列。我要显示的三列是

SELECT answer1 AS answer_q1,
answer2 AS answer_q2,
COUNT(distinct(user)) AS response_count

例如,在前面的代码行中,我输入了问题,看起来像问题="你叫什么名字?"。有没有办法将答案 1 重命名为该问题,如下所示:

SELECT answer1 AS q1.question  

你应该使用动态查询。如果您更多地描述您的表和列,我可以提供更多帮助。并编写其数据的示例。问题在另一个表中还是从输入变量中获取?

如果我明白你的意思,在sql服务器中你可以写:

declare @q1 varchar(500)
declare @q2 varchar(500)
declare @sql varchar(max) =
'select q1.answer as '+@q1+' ,q2.answer as '+@q2+' ,q1.cnt+q2.cnt as count
from
(SELECT b.answer ,count(discount(user_id)) cnt
FROM user_offer_question_answer a    
JOIN offer_question_answer b ON a.offer_question_id= b.offer_question_id    AND 
a.offer_question_answer_id=b.id    
JOIN question c ON a.offer_question_id=c.id  
group by b.answer
WHERE c.question='+@q1+') q1
cross join
(SELECT b.answer ,count(discount(user_id)) cnt
FROM user_offer_question_answer a    
JOIN offer_question_answer b ON a.offer_question_id= b.offer_question_id    AND 
a.offer_question_answer_id=b.id    
JOIN question c ON a.offer_question_id=c.id  
group by b.answer,c.question
WHERE c.question='+@q2+')q2'
exec @sql

最新更新