选择时带大小写的Sql请求

选择时带大小写的Sql请求,sql,Sql,即使我尝试了不同的解决方案,我的SQL请求也不起作用 我得到了一个表TableOne,其中有一个项目列表,行如下 A B C. A a A b A c B a B d B e C f SELECT a.letter, Case WHEN b.letter is null then 'No' ELSE 'Yes' END AS [Check] FROM a LEFT JOIN b ON a.letter = b.letter 我有另一个表TableTwo,其中有一个项目列

即使我尝试了不同的解决方案,我的SQL请求也不起作用

我得到了一个表
TableOne
,其中有一个项目列表,行如下

A 
B 
C.
A a
A b
A c
B a
B d
B e
C f
SELECT a.letter,
Case
    WHEN b.letter is null then 'No'
    ELSE 'Yes'
END AS [Check]
FROM
a
LEFT JOIN
b
ON a.letter = b.letter
我有另一个表
TableTwo
,其中有一个项目列表,行如下

A 
B 
C.
A a
A b
A c
B a
B d
B e
C f
SELECT a.letter,
Case
    WHEN b.letter is null then 'No'
    ELSE 'Yes'
END AS [Check]
FROM
a
LEFT JOIN
b
ON a.letter = b.letter
我想提取行,我需要知道第二个表中是否存在一个特定值(例如,值a)

大概是这样的:

A yes
B yes
C no
这是我的请求:

SELECT 
    a.letter,                                               
    CASE
       WHEN a.letter IN (SELECT e.letter FROM TableTwo e WHERE e.text = 'SAIRET') 
          THEN 'yes'
          ELSE 'no'
    END
FROM 
    TableOne a                                                 
INNER JOIN
    TableTwo e ON a.letter = e.letter

试试这样的

A 
B 
C.
A a
A b
A c
B a
B d
B e
C f
SELECT a.letter,
Case
    WHEN b.letter is null then 'No'
    ELSE 'Yes'
END AS [Check]
FROM
a
LEFT JOIN
b
ON a.letter = b.letter

首先,内部联接只保留两个表中存在的行。因此,在该测试中,您永远不会得到结果“否”

第二个表中的e.text是什么?请提供更详细的场景?如果没有。下面是查询的结果

Select  a.letter,
Case when b.letter is not null then 'YES' else 'NO' End as flg
From tableone a 
Left join tabletwo b on a.letter =b.letter;

必须加入表,
按字母分组
,并使用条件聚合:

select 
  t1.letter,
  case 
    when sum(case t2.text when 'a' then 1 end) > 0 then 'yes'
    else 'no'
  end result
from tableone t1 left join tabletwo t2
on t2.letter = t1.letter
group by t1.letter
select t2.letter,
       (case when sum(case when t2.text = 'SAIRET' then 1 else 0 end) > 0
             then 'yes' else 'no'
        end)
from tabletwo t2
group by t2.letter;
请参阅。
结果:


如果
tabletwo
包含
tableone
中的所有字母,则可以使用条件聚合:

select 
  t1.letter,
  case 
    when sum(case t2.text when 'a' then 1 end) > 0 then 'yes'
    else 'no'
  end result
from tableone t1 left join tabletwo t2
on t2.letter = t1.letter
group by t1.letter
select t2.letter,
       (case when sum(case when t2.text = 'SAIRET' then 1 else 0 end) > 0
             then 'yes' else 'no'
        end)
from tabletwo t2
group by t2.letter;
否则,我建议
存在

select t1.*,
       (case when exists (select 1
                          from tabletwo t2
                          where t2.letter = t.letter and t2.text = 'SAIRET'
                         )
             then 1 else 0
        end)
from tableone t1;

这应该是最快的方法,尤其是在
表2(字母、文本)
上有索引的情况下。

非常感谢您的回答

它正在处理以下请求

当总和大于0时,则为“oui”
else‘non’end

非常感谢您的回复。这是完美的工作@ClarisseBADIOU,如果这解决了你的问题,考虑通过在左边勾勾标记来接受答案。花点时间读这个:所以你知道事情是如何在这里工作的。