SQL返回最佳值if

时间:2017-06-21 14:48:12

标签: sql sql-server

我正在使用一个数据库,其中会出现如下表所示的表。

 StudentNum  |    Coin
-------------+------------
     1       |    Heads
     1       |    Tails
     3       |    Tails
     3       |    Tails
     2       |    Heads
     3       |    Tails

我没有权限添加或调整表格,并且需要知道在将其加入另一个表格时是否可以控制填充行的条件。

具体来说,我试图找出每个给定的ID是否已经获得了一个阳性结果(在这种情况下是Tails)至少一次。如果是这样,请将其用于该字段,否则请使用Heads。

 StudentID   |    Coin   |    ...
-------------+-----------+----------
     1       |    Tails  |
     2       |    Heads  |
     3       |    Tails  |
     4       |     ...   |
    ...      |     ...   |

3 个答案:

答案 0 :(得分:0)

您可以使用CASE WHEN语句。看看这是不是你想要的。

<md-card ng-repeat="things in dataToDisplay"></md-card>

答案 1 :(得分:0)

如果我正确理解,你可以使用这样的东西:

select StudentNum, case when sum(case when Coin = 'Tails' then 1 end) >= 1 then 'Tails' else 'Heads' end
from the_table
group by StudentNum

答案 2 :(得分:0)

如果硬币只有HeadsTails,那么Tails&gt;在进行字符串比较时Heads,您可以使用maxgroup by

select StudentNum  ,max(coin) as coin
from your_table
group by StudentNum;

因此,如果对于任何学生,您同时拥有HeadsTailsTails,则TailsMAX(COIN)。如果仅Head,那么您将Head

限制:假设null中没有coin或前导空格。两种类型的硬币的情况也应相同(较低,UPPER或第一个上部然后较低,因为比较将发生在第一个字符的ascii值。