【问题标题】:SQL Server : SELECT DISTINCT Group By with CountSQL Server:SELECT DISTINCT Group By with Count
【发布时间】:2014-11-07 22:15:45
【问题描述】:

我有一张如下表。

我可以像上面那样输出吗?

谢谢

【问题讨论】:

  • 您似乎想要每个 id 的最新日期。但是每个 id 你想要什么味精?我假设实际上每个味精不会只是“味精...”?
  • msg... 表示像 hi blabla 这样的消息...
  • 表中有主键吗?
  • 我们不想要,信息可能是什么。我们想知道您是否要显示最新消息,因为您希望显示最新日期。还是您的意思是 smith/linda 的所有记录中的消息都相同
  • 是的。有一个主键为 msg_id(integer)

标签: sql-server tsql select count distinct


【解决方案1】:
SELECT T.id, Q.max_date, count(T.msg)
FROM Table1 T, (select id, MAX(dateD) as max_date from Table1 group by id) Q
where Q.id=T.id
group by T.id, Q.max_date
;

【讨论】:

  • 请考虑在您的答案中添加一些描述,仅粘贴代码 sn-p 可能会解决眼前的问题,但不会增加任何理解或长期价值。
【解决方案2】:

对于 sql server,试试这个:

SELECT id, max(date) as date, msg, count(id) AS count 
FROM table_name 
GROUP BY id, msg

【讨论】:

    【解决方案3】:

    似乎您想要结果集中的最新日期,所以查询看起来像这样, SELECT id, max(date), msg, COUNT(id) AS count FROM table_name GROUP BY id

    【讨论】:

      【解决方案4】:

      尝试以下查询:

      SELECT t1.id, t1.date, t1.msg, t2.msg_count 
      FROM table_name t1 
      JOIN (SELECT max(msg_id) as mid, count(*) as msg_count FROM table_name GROUP BY id) as t2 
      ON(t1.msg_id=t2.mid)
      

      【讨论】:

        【解决方案5】:

        这是执行此操作的 MYSQL 查询

        SELECT id, date, msg, COUNT(id) AS count FROM table_name GROUP BY id

        【讨论】:

        • 我真正的查询是 SELECT tbl_msg.msg_id, tbl_msg.msg_sender, tbl_msg.msg_receiver, tbl_msg.msg_content, tbl_msg.msg_date, tbl_users.user_fname, tbl_users.user_lname FROM tbl_msg LEFT JOIN tbl_user tbl_users.user_no WHERE (tbl_msg.msg_receiver = 'staff') GROUP BY tbl_msg.msg_sender ORDER BY tbl_msg.msg_date DESC
        • 但错误列 tbl_msg.msg_id 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
        猜你喜欢
        • 2020-10-30
        • 1970-01-01
        • 1970-01-01
        • 2020-11-05
        • 2020-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多