给出一个包含多行且没有主键的表,例如:
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
任何帮助将不胜感激。
答案 0 :(得分:0)
希望此查询对您有帮助:
SELECT top 1 username,state,license FROM LicenseTable where username = 'User1'
order by case when state='CO' then 0 else 1 end;
我们正在做的是对结果进行排序的方式是:当结果中存在CO时,我们就排序,以使CO排在最前面,并显示该结果的第一条记录。