【问题标题】:Query for checking if every cell is null in a column by id查询以按 id 检查列中的每个单元格是否为空
【发布时间】:2023-01-12 06:08:12
【问题描述】:

下面是一个示例表,我试图找出一种方法来编写查询,如果每个 ID 行的所有 STOCK 单元格都为空,则在 READY 下的每个单元格中放置一个 Y。因此,Y 只会出现在 ID 1 的 READY 列中,因为 OS 位于每个其他 ID 的列之一中。

ID STOCK READY
1
1
1
2 OS
2
2
3 OS
3

我的第一个想法是使用 case 语句,但在每个包含空白 STOCK 的列中放置一个 Y,而不是检查每个 ID 的所有 STOCK 是否为空。有什么想法可以实现吗?

SELECT ID,
STOCK,
CASE WHEN STOCK = '' THEN 'Y'
ELSE '' END AS [READY]
FROM TABLE

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您可以使用窗口函数:

    select id, stock,
        case when count(stock) over(partition by id) = 0 then 'Y' end as ready
    from mytable
    

    窗口计数考虑了共享相同id 的行中stock 的非空值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多