栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在SQL Server SELECT语句中使用CASE时消除NULL

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在SQL Server SELECT语句中使用CASE时消除NULL

试试这个:

   Select Name,    Min (Case When tag = 'A' Then Tag End) A,    Min (Case When tag = 'B' Then Tag End) B,    Min (Case When tag = 'C' Then Tag End) C,    email   From tableName   Group By Name, email

编辑:解释…每次
使用a时

GroupBy
,您都在告诉查询处理器您希望它将结果聚合到“存储桶”中,其中每个存储桶由组中定义的列[或表达式]中的唯一值定义按子句。这意味着对于分组依据中定义的那些列[或表达式]中的每个唯一值集,最终结果集将只有一行,并且只有一行。查询中使用的所有其他列或表达式(“分组
依据”中 定义的列或表达式除外) 必须是基于聚合函数的表达式 (例如Count(),Sum(),Avg(),Min(),Max(
)等),它们会根据计算产生一个值,该值将应用于预汇总结果集中的所有行。例如,如果我要
Group By
姓氏的第一个字符:

Select Left(LastName, 1), Count(*),    Sum(Salaray, Avg(Height),    Min(DateOfBirth), etc.  From Table  Group By Left(LastName, 1)

那么我最多将在输出中获得26行(每个字母对应一个字母),而我的输出中的所有其他列必须基于某种聚合函数,才能应用于姓氏开头的原始集中的所有行以“
A”开头,则姓氏以“ a”开头的所有行均以“ B”开头,依此类推。

在您的问题中,“分组依据”仅用于将输出集限制为每个不同的用户和电子邮件仅一行。完成此操作后,每行将只有一行。Select语句中的其他列需要有

Min()
[[
Max()
也将同样起作用),仅是为了满足上面
粗体斜体中 提到的语法要求。 ,则集合中将只有一个非空行,因此仅出于语法要求而采用Min()或Max()是必要的…



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/456056.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号