代码之家  ›  专栏  ›  技术社区  ›  Robdll

如何选择特定值并将其连接到第一个结果集

  •  1
  • Robdll  · 技术社区  · 6 年前

    我有一个select语句,它返回表中的几列。 我有一个“DaySince”栏(第三个),实际上是日期差异。

    我需要再选择一个列(作为numberOfRecord),它将表示具有相同“daySince”值的行数。 我只是在这里附加了数字7来解释结构的外观,即使该列的正确值是:

    • 8代表自VAL 15起有一天的行

    • 对于自VAL 16起有一天的行,为2

    希望我的要求是有道理的。 我试图运行一些随机的左,右,完全外部连接与可怕的结果。 有人能告诉我正确的地址吗?

    下面是查询示例

    SELECT username, id, DATEDIFF( creation, '2018/02/28') as daySince, 7 as numberOfRecord
    FROM MyTable 
    ORDER BY daySince ASC
    
    username  id daySince numberOfRecord
    rob 2D8836  11  7
    rob 2D8836  12  7
    rob 2D8836  13  7
    rob 2D8836  14  7
    rob 2D8836  15  7
    rob 2D8836  15  7
    rob 2D8836  15  7
    rob 2D8836  15  7
    rob 2D8836  15  7
    rob 2D8836  15  7
    rob 2D8836  15  7
    rob 2D8836  15  7
    rob 2D8836  16  7
    rob 2D8836  16  7
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Mr. Bhosale    6 年前

    看看这个。

            SELECT
                username, id, 
                DATEDIFF( creation, '2018/02/28') as daySince, 
                Count(DATEDIFF( creation, '2018/02/28')) as numberOfRecord
            FROM MyTable 
            Group By DATEDIFF( creation, '2018/02/28')
            ORDER BY daySince ASC
    
        2
  •  0
  •   Gordon Linoff    6 年前

    根据您的需要,您应该通过 username, id :

    SELECT username, id, DATEDIFF(creation, '2018-02-28') as daySince, COUNT(*)
    FROM MyTable 
    GROUP BY username, id, DATEDIFF( creation, '2018-02-28')
    ORDER BY daySince ASC;
    

    或者你应该移除 username id ,因为它们无关紧要:

    SELECT DATEDIFF(creation, '2018-02-28') as daySince, COUNT(*)
    FROM MyTable 
    GROUP BY DATEDIFF( creation, '2018-02-28')
    ORDER BY daySince ASC;