按lang_type获取记录如果不存在,则获取默认lang



我有一个类似以下的要求

-------------------------
| Label_Id | Lang_Type |
------------------------- 
| Label1   | EN        |
------------------------- 
| Label2   | EN        |
------------------------- 
| Label2   | DE        |
------------------------- 
| Label3   | EN        |
------------------------- 
| Label4   | EN        |
------------------------- 
| Label4   | DE        |
------------------------- 
| Label5   | EN        |
-------------------------

预期的输出是,如果我们查询Lang_Type=DE则我们得到每个Label_ Id一行,即如果DE可用,则返回该标签的否则返回EN行。

-------------------------
| Label_Id | Lang_Type |
------------------------- 
| Label1   | EN        |
------------------------- 
| Label2   | DE        |
------------------------- 
| Label3   | EN        |
------------------------- 
| Label4   | DE        |
------------------------- 
| Label5   | EN        |
-------------------------

有人能指导我如何用当前的表结构来满足这一要求吗?或者应该对表结构进行规范化或其他什么。

谢谢!!!

select label_ID,count(label_ID) Label_count into #LabelCount
from table_name
group by label_ID

select O.label_ID,O.Lang_Type into #O2
from table_name O
inner join #LabelCount LC on O.label_ID=LC.label_ID
where LC.Label_count=2 AND O.Lang_Type='DE'
select O.label_ID,O.Lang_Type into #O3
from table_name O
inner join #LabelCount LC on O.label_ID=LC.label_ID
where LC.Label_count=1
select * from (
select label_ID,Lang_Type from #O2
UNION
select label_ID,Lang_Type from #O3 ) AS ANSWER
DROP TABLE #LabelCount
DROP TABLE #O2
DROP TABLE #O3

这可能会为您提供所需的输出

相关内容

最新更新