【问题标题】:How to use case statement in group by category in SQL Server如何在 SQL Server 中按类别使用 case 语句
【发布时间】:2018-11-19 04:44:51
【问题描述】:

我有一张下表

标识值 1个 1个 1乙 2@ 2@ 2@ 3个 3个 3个 3个 3@ 4乙 4乙 4乙

输出:

标识值 1@ 2@ 3个 4乙

在每个Id 组中,如果所有值都是@,我想将该Id 的值设置为@ 否则,如果Id 的所有值都相同(忽略@s)(例如所有As),则将该Id 的值设置为该值(A)否则将id 的值设置为@ 987654330@.

我如何运行CASE 语句,为SQL Server 中的每个Id 赋予一个唯一值?

SQL Server 的新手,请帮忙。

【问题讨论】:

  • 你试过GROUP BY Id, Values吗?

标签: sql sql-server tsql case


【解决方案1】:

ID 上使用GROUP BY 并检查MIN ()MAX ()。如果 min = max 表示,所有值都相同。

对于你来说,转折是@。它应该被忽略。诀窍是在@ 上使用NULLIF()

select  id,
        case    when    min(NULLIF([Values], '@')) = max(NULLIF([Values], '@'))
                and     min(NULLIF([Values], '@')) <> '@'
                then    min(NULLIF([Values], '@'))
                else    '@'
                end
from    yourtable
group by id 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    相关资源
    最近更新 更多