sql - where 语句中的 case 语句
问题描述
给定一个包含多行且没有主键的表,例如:
User STATE License
---- ----- -------
User1 FL aaaaaa
User1 AL bbbbbb
User2 CO cccccc
User2 CA dddddd
User3 GA eeeeee
User4 NULL NULL
我正在尝试编写一个查询,该查询将仅返回一个州的用户和许可证。条件是如果状态为 CO,则返回包含 CO 作为状态的行中的用户和许可证。否则,对于该特定用户,任何一行都足够了。例如,我希望我的输出看起来像:
User STATE License
---- ----- -------
User1 AL bbbbbb or User1 FL aaaaaa (I don't care)
User2 CO cccccc
User3 GA eeeeee
User4 NULL NULL
编辑:我需要每个用户返回一行。如果有 CO 许可证,我需要将其作为返回的行,否则任何行都足够了。如果该用户在表中至少有一个条目,则只需要返回一条记录。
我尝试做这样的事情,但没有奏效。
SELECT USER,
STATE,
LICENSE
FROM LicenseTable
Where STATE =
CASE
WHEN state = 'CO' THEN 'CO'
ELSE max(state)
END
任何帮助将不胜感激。
解决方案
希望此查询对您有所帮助:
SELECT top 1 username,state,license FROM LicenseTable where username = 'User1'
order by case when state='CO' then 0 else 1 end;
我们正在做的是以这样一种方式对结果进行排序,即当结果中存在 CO 时,我们以 CO 出现在顶部的方式进行排序,并显示该结果的第一条记录。
推荐阅读
- django-models - 在 django 中加入两个模型
- laravel - Laravel安装sail问题((23)Failed writing body)
- javascript - 选择标签保持初始状态值而不更新
- jsp - 我该如何解决 varriale not found 错误?
- c# - 根据每行的首字母在c#中拆分.txt文件
- c++ - 如何检查派生类是否已完全构造
- immersive-reader - Create-ImmersiveReaderResource 函数参数
- sql - SQL 你如何找到丢失的 ID(不按顺序,或无序)?
- python - 使用桌面屏幕作为输入的实时 yolov5 检测
- c# - C#; 将滚动条移动到搜索词的位置