语法:对t-SQL别名设置使用case或if-then-else?
问题描述:
我正在使用t-SQL进行报告,并且有关于语法的问题。我刚开始学习一些更中级的SQL东西,如连接,别名,case语句,order by等。语法:对t-SQL别名设置使用case或if-then-else?
我有一张表,我需要从中提取人员数据。在提取数据时,我需要将每个人关联起来,并根据属性对人员列表进行排序。然后我想将人员数据存储在两个变量(别名)中。一个人拥有'申请人'属性,他们的信息应该别名,并与其他人分开存储。其他人应该存储在一个列表中。有没有一种好的方法在SQL中做到这一点?下面是我在伪
select * from persontable
if persontable.TYPE = 'Applicant' then persontable.name as applName, persontable.otherAtt as applOtherAtt --etc
else persontable.name --add to a list and alias as otherNames
什么想这样
case when persontable.TYPE = 'Applicant'then persontable.name as applName, persontable.otherAtt as applOtherAtt --etc
else persontable.name --add to a list and alias as otherNames
答
标记为回答,抬头变量和别名之间的区别,并提供了一个链接到一些容易跟随IF-THEN - 逻辑。
理解这个问题有点难(至少对我来说)。您能否请您分享您的表格结构,一些样品数据以及您想要获得的样品结果? – Mureinik
@Mureinik对不起,我不允许共享表格结构。我以为我在上面的模型做得很好,什么让你感到困惑? 从数据库拉人然后如果人=申请人,将申请人的信息存储在多个别名中 否则,如果人不是申请人,则将其姓名添加到非申请人名单中。 – TheFunk
你的问题令人困惑,因为你谈论的是将数据存储在两个变量中。你的伪代码没有任何变量。变量保存标量数据,因此您不能执行填充它们的多行SELECT。真的不清楚你想要做什么。也许这会帮助你:http://stackoverflow.com/questions/20669192/t-sql-select-case-vs-if-el-and-explaination-about-begin –