TSQL 窗口函数

Posted

技术标签:

【中文标题】TSQL 窗口函数【英文标题】:TSQL Window Function 【发布时间】:2020-07-09 15:56:16 【问题描述】:

我有一个三列的表格:

Survey   QuestionName   SurveyQuestion     SurveyAnswer
1859     Satisfied?     1                  Yes
1859     Comments?      2                  Happy with outcome, thanks
1859     Phone Number?  3                  Not Answered
2000     Satisfied?     1                  No
2000     Comments?      2                  Rep was a d1ck. 
2000     Phone Number?  3                  5166569999

我想要最终得到一个看起来像这样的表格(注意:不需要 SurveyQuestion #3)

Survey   SurveyAnswer1    SurveyAnswer2     
1859     Yes              Happy with outcome, thanks
2000     No               Rep was a d1ck.                            

我只是想不出该怎么做...我尝试了几种方法,包括LEAD/LAG,但无法让它工作...我想我只需要有人来指出我正确的方向????

【问题讨论】:

【参考方案1】:

那是四列 ;)

您可以使用旧的聚合作为交叉表栗子:

select   Survey,
         SurveyAnswer1 = max(iif(SurveyQuestion = 1, SurveyAnswer, null)),
         SurveyAnswer2 = max(iif(SurveyQuestion = 2, SurveyAnswer, null))
from     YourTable
where    SurveyQuestion != 3
group by Survey

【讨论】:

以上是关于TSQL 窗口函数的主要内容,如果未能解决你的问题,请参考以下文章

是否有窗口函数或窗口函数组合可用于通过 TSQL 获得所需的结果

TSQL 对窗口计数

Mysql窗口函数

MySql窗口函数

hive窗口函数总结

窗口函数--排序函数