我想写一个查询,该查询搜索表的列并返回具有多个单词的别名的计数。我可以得到一些帮助我写一个SQL查询在表列中搜索多个单词
select
count(STREET_ADDRESS) AS MELBOURNE
from
CUSTOMERS
where
STREET_ADDRESS like '%MELBOURNE%'
我试图做到这一点的多个城市在一个查询像Melbourne, Sydney, Auckland
等
我想写一个查询,该查询搜索表的列并返回具有多个单词的别名的计数。我可以得到一些帮助我写一个SQL查询在表列中搜索多个单词
select
count(STREET_ADDRESS) AS MELBOURNE
from
CUSTOMERS
where
STREET_ADDRESS like '%MELBOURNE%'
我试图做到这一点的多个城市在一个查询像Melbourne, Sydney, Auckland
等
试试这个,SELECT COUNT(*) FROM CUSTOMERS WHERE STREET_ADDRESS IN ('MANGERE','AVONDALE')GROUP BY STREET_ADDRESS
街道地址栏包含正确的地址,因此我必须使用通配符来搜索关键字。 – Vijay
以下查询适用于我希望的工作。 感谢您的帮助:-) * ********************** SELECT DISTINCT(SUM(CASE WHERE STREET_ADDRESS LIKE'%MANGERE%'THEN 1 ())作为MANGERE_COUNT, (SUM(CASE当STREET_ADDRESS LIKE'%AVONDALE%'THEN 1 ELSE 0 END)ON AVONDALE_COUNT, FROM CUSTOMERS – Vijay
@ Mansoor的查询是最精确和最优的一,不要混淆! –
请记住,列在选择的数量是固定的。也许我错过了理解,但是你想输入一个城市列表,并且输出包含你输入的列的数量?
如果没有(固定铌城市): 建议:加入的条件与查询(说实话,因为使用通配符没有真正PERF的提高,你应该想想,否则增加一个“城市”栏目,如果表变得太大,这个查询就会变得很慢)
SELECT
SUM(CASE WHEN STREET_ADDRESS LIKE '%MANGERE%' THEN 1 ELSE 0 END) AS MANGERE_COUNT,
SUM(CASE WHEN STREET_ADDRESS LIKE '%AVONDALE%' THEN 1 ELSE 0 END) AS AVONDALE_COUNT
FROM CUSTOMERS
WHERE
STREET_ADDRESS like '%MANGERE%'
OR
STREET_ADDRESS like '%AVONDALE%'
如果是这样的话:
您需要创建动态SQL转输出。
希望它可以帮助 塞尔吉奥
有,你使用case
表达式返回每个STREET_ADDRESS城市名称派生表。然后做GROUP BY
其结果数:
select count(*), city
from
(
select case when upper(STREET_ADDRESS) like '%MELBOURNE%' then 'Melbourne'
when upper(STREET_ADDRESS) like '%SYDNEY%' then 'Sydney'
when upper(STREET_ADDRESS) like '%AUCKLAND%' then 'Auckland'
end as city
from CUSTOMERS
) dt
group by city
注意:如果使用不区分大小写的排序规则不需要UPPER()
部分。
提供您的示例数据和预期结果 – Mansoor
就像我在SQL中一起运行以下查询一样,它会分析出两种不同的预期结果。 我希望将这两个查询合并为一个,仍然可以得到相同的结果。 ****************************** select count(STREET_ADDRESS)AS MANGERE from CUSTOMERS where STREET_ADDRESS like'%MANGERE%' ******************************** 从客户处选择计数(STREET_ADDRESS)作为AVONDALE,其中STREET_ADDRESS为'%AVONDALE% ' – Vijay