这是问题
使用CASE表达式,显示连接到姓氏的作者名字,用连接到“is:”的空格分隔。根据state列中的值将前一个结果连接到一个口号。如果状态为“CA”,则显示“Sunny”。如果州是“CO”,则显示“罕见”。如果状态为“FL”,则显示“桃子”。如果状态是“NY”,则显示“喜欢苹果派”。将列命名为“作者特征”。按“作者特征”排序结果。
这是我到目前为止编写的代码
select concat(au_fname, au_lname, ' is: '),
case state
when 'CA'
then 'Sunny'
when 'CO'
then 'a rarity'
when 'FL'
then 'a peach'
when 'NY'
then 'like apple pie'
else 'state'
end
AS "Author Characteristics"
FROM authors
ORDER BY 1;
我遇到的问题是输出给了我两列,一列来自concat语句,第二列标题为Author Characteristics。我需要只获得一个字段,因此信息只与一个标题一起。
答案 0 :(得分:2)
只需将case
另一个参数设为CONCAT
。
select concat(au_first, au_last, ' is: ', case state
when 'CA' then 'Sunny' when 'CO' then 'a rarity' when 'FL' then 'a peach'
when 'NY' then 'like apple pie' else 'state' end) AS "Author Characteristics"
答案 1 :(得分:2)
尝试
select concat(au_fname, au_lname, ' is: ',
case state
when 'CA'
then 'Sunny'
when 'CO'
then 'a rarity'
when 'FL'
then 'a peach'
when 'NY'
then 'like apple pie'
else 'state'
end )
AS "Author Characteristics"
FROM authors
ORDER BY 1;
这将在您的concat
声明中包含“州”值。在原始代码中,您最终得到了两列,因为concat
语句导致了一列,而case
导致了另一列。
答案 2 :(得分:1)
为了在结果列表中包含一列,您还需要在CASE
函数中包含CONCAT()
语句。但是在ORDER BY
子句中,您需要再次拥有CASE
语句,因为您希望按州对它们进行排序。按ORDER BY 1
排序记录将对au_fname
上的记录进行排序。
select concat(au_fname, ' ',au_lname, ' is: ',
case state
when 'CA' then 'Sunny'
when 'CO' then 'a rarity'
when 'FL' then 'a peach'
when 'NY' then 'like apple pie'
else 'state'
end) `Author Characteristics`
FROM authors
ORDER BY case state
when 'CA' then 'Sunny'
when 'CO' then 'a rarity'
when 'FL' then 'a peach'
when 'NY' then 'like apple pie'
else 'state' end
但如果我误解了这个问题,你可以直接通过ALIAS
订购它们,
ORDER BY `Author Characteristics`
答案 3 :(得分:1)
包含'案例'在#concat'中的声明功能
select concat(au_fname, au_lname, ' is: ',
case state
when 'CA'
then 'Sunny'
when 'CO'
then 'a rarity'
when 'FL'
then 'a peach'
when 'NY'
then 'like apple pie'
else 'state'
end)
AS "Author Characteristics"
FROM authors
ORDER BY 1;