【问题标题】:SQL Server - Compare on multiple columns in differnet rows within same tableSQL Server - 比较同一表中不同行中的多个列
【发布时间】:2014-06-19 09:46:15
【问题描述】:

我有一个表格,其中包含从 2 米读取的值:

----------------------------
   Date   | MeterID | Value
----------------------------
  1/2/14       A       1.3
  2/2/14       A       1.8
  2/2/14       B       3.8
  3/3/14       A       1.2
  4/3/14       A       1.8
  4/3/14       B       2.9

我需要一个查询来计算两种仪表类型(AB)存在读数的天数?
在上面的示例中,这应该产生 2 作为结果。

谢谢。

【问题讨论】:

    标签: sql sql-server compare


    【解决方案1】:

    MeterID 中出现AB 然后COUNT() 所有这些[Date]s 时,您可以使用临时表列出[Date]s:

    SELECT COUNT(t.*) 
    FROM ( SELECT [Date] 
           FROM [table] 
           GROUP BY [Date] 
           HAVING COUNT(DISTINCT [MeterID]) = 2
         ) t
    

    【讨论】:

    • 谢谢你......还有一个问题......如果我有另一个我也想过滤的字段,例如读取读数的人的姓名,那么我会想计算每个人在同一天读取两个仪表的天数 - 我该如何添加这个???
    • @user3359779 :嗯,不太清楚,但您可以尝试将name 添加到SELECTGROUP BY 子句中,这样您就可以获得每个人和每天的数据。跨度>
    【解决方案2】:

    另一种解决方案,使用集合:

    select count(*) from
    (
        select distinct date from table where meterid='A'
        intersect
        select distinct date from table where meterid='B'
    ) x
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多