0

这是问题

使用 CASE 表达式,显示作者的名字连接到他的姓氏,由连接到“是:”的空格分隔。根据状态列中的值将先前的结果连接到标语。如果状态为“CA”,则显示“Sunny”。如果状态为“CO”,则显示“稀有”。如果状态为“FL”,则显示“a peach”。如果 state 是“NY”,则显示“likes apple pie”。将列命名为“作者特征”。按“作者特征”排序结果。

这是我到目前为止写的代码

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 语句,第二列的标题是作者特征。我只需要获取一个字段,因此信息全部与一个标题一起。

4

4 回答 4

2

只需caseCONCAT.

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"
于 2013-05-19T03:13:19.807 回答
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另一列。

于 2013-05-19T03:13:22.417 回答
1

为了在结果列表中有一列,您还需要在函数中包含CASE语句。CONCAT()但是在ORDER BY子句中,您需要再次拥有该CASE语句,因为您想按州对它们进行排序。Orderinf 记录 byORDER 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`
于 2013-05-19T03:14:05.027 回答
1

在“concat”函数中包含“case”语句

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;
于 2013-05-19T03:14:28.760 回答