【问题标题】:Roll up resultset SQL Server汇总结果集 SQL Server
【发布时间】:2012-08-03 14:42:59
【问题描述】:

我有这样生成的数据

RowNumber   Firmware   value1   value2
    1          1          5      NULL
    1          1         NULL    NULL
    1          1         NULL    NULL

知道如何使用 TSQL 将其分组以获得单行吗?

输出应该是

RowNumber Firmware  value1 value2
    1        1          5      NULL

'value1' 和 'value2' 的值为 NULL 的行应该被删除。

【问题讨论】:

  • 上面提到的那些是表中唯一的列吗?
  • 这是查询的结果吗?你能发布生成的 SQL 吗?
  • 还有其他栏目。这只是一个示例数据。 RowNumber、firmware 列保持不变,但其他列的名称会根据数据发生变化。

标签: .net sql-server sql-server-2008


【解决方案1】:

为什么不

...
where 
          not value1 is null
      or  not value2 is null

通过这种方式,您可以消除 value1 和 value2 具有 NULL 值的行,并且只获得一行而不使用 group by。

【讨论】:

  • 不应该 andor 吗?如果两个值都不为空,则检索行。
  • 正如用户所说“'value1' 和 'value2' 的 NULL 值”我打算两者都不能为空;这就是我使用 AND 的原因。
  • 此查询不会检索 (5, null) 行。
【解决方案2】:
Select 
        RowNumber, 
        FirmWare, 
        MAX(Value1) as Value1, 
        MAX(Value2) as Value2 

from    Table

Group by 
        RowNumber, FirmWare

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2015-06-27
    相关资源
    最近更新 更多