[英]SQL error Unknown column in field list using multiple subquery
I'm trying to print the text based on the column.我正在尝试根据列打印文本。 My idea was union all the count on each occupation and use a case to display it.
我的想法是将每个职业的所有计数结合起来,并用一个案例来展示它。 But I'm not sure what is wrong with this code.
但我不确定这段代码有什么问题。 Getting a error as sCount is not in field list.
由于 sCount 不在字段列表中,因此出现错误。 Any help is appreciated.
任何帮助表示赞赏。
SELECT CASE
WHEN Occupation = "doctor" THEN
CONCAT("There are a total of ", dCount, " " , Occupation, "s.")
WHEN Occupation = "singer" THEN
CONCAT("There are a total of ", sCount, " " , Occupation, "s.")
END
FROM (
SELECT * FROM (
SELECT COUNT(Occupation) AS dCount, Lower(Occupation) AS Occupation FROM OCCUPATIONS WHERE Occupation = 'Doctor'
UNION
SELECT COUNT(Occupation) AS sCount, Lower(Occupation) AS Occupation FROM OCCUPATIONS WHERE Occupation = 'Singer'
) AS s
) AS m;
// this didnt work either
SELECT CASE
WHEN Occupation = "doctor" THEN
CONCAT("There are a total of ", dCount, " " , Occupation, "s.")
WHEN Occupation = "singer" THEN
CONCAT("There are a total of ", sCount, " " , Occupation, "s.")
END
FROM (
SELECT COUNT(Occupation) AS dCount, Lower(Occupation) AS Occupation FROM OCCUPATIONS WHERE Occupation = 'Doctor'
UNION
SELECT COUNT(Occupation) AS sCount, Lower(Occupation) AS Occupation FROM OCCUPATIONS WHERE Occupation = 'Singer'
) AS m;
Are you trying something like this :你在尝试这样的事情吗:
CREATE TABLE OCCUPATIONS (
Occupation varchar(100) );
INSERT INTO OCCUPATIONS VALUES ('doctor'),('doctor'),
('singer'),('singer'),
('doctor'),('doctor'),
('singer'),('singer'),
('doctor'),('singer'),
('singer'),('singer');
SELECT CASE
WHEN Occupation = "doctor" THEN
CONCAT("There are a total of ", tbl.dCount, " " , Occupation, "s.")
WHEN Occupation = "singer" THEN
CONCAT("There are a total of ", tbl.sCount, " " , Occupation, "s.")
END as total_count
FROM (
SELECT COUNT(Occupation) AS dCount,null as sCount, Lower(Occupation) AS Occupation
FROM OCCUPATIONS
WHERE Occupation = 'doctor'
group by Occupation
union
SELECT null as tst, COUNT(Occupation) AS sCount, Lower(Occupation) AS Occupation
FROM OCCUPATIONS
WHERE Occupation = 'singer'
group by Occupation
)
as tbl ;
Result based on my demo would be:基于我的演示的结果将是:
total_count
总数
There are a total of 5 doctors.
总共有5名医生。
There are a total of 7 singers.
共有7位歌手。
Demo: https://www.db-fiddle.com/f/pB6b5xrgPKCivFWcpQHsyE/28演示: https : //www.db-fiddle.com/f/pB6b5xrgPKCivFWcpQHsyE/28
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.