如何按两列横向排序表

  • 本文关键字:排序 横向 何按两 sql
  • 更新时间 :
  • 英文 :


我有一个表,属于一个人的手机短信叫"阿里"。他收到别人的短信,然后把他的短信回复给那些人。

MessageTable看起来像这样:

<表类> id sendDate sendTime 发送者 接收机 tbody><<tr>11397/01/02上午10:02卡里姆阿里21398/05/0905:30。阿里31398/06/0705:10Majid阿里41398/08/0906:12阿里卡里姆51399/02/0107:15阿里赛义德61399/07/0208:51Parsa阿里71399/08/0612:20阿里卡里姆81399/09/0420:01阿里。91399/12/08球队的Asgar阿里101400/01/0123:11Majid阿里111400/02/13十四10卡里姆阿里121400/04/0516:25阿里。121400/06/1222:25阿里Majid121400/07/2408:25赛义德阿里

按每个联系人的第一个时间戳先排序。
联系人。然后是日期& &;时间。

如果没有窗口函数,就像这样:

SELECT t.*
FROM messages t
JOIN (
SELECT 
(CASE WHEN receiver = 'Ali' THEN sender ELSE receiver END) AS contact, 
MIN(TIMESTAMP(sendDate, sendTime)) AS minTs
FROM messages
WHERE 'Ali' IN (sender, receiver)
GROUP BY (CASE WHEN receiver = 'Ali' THEN sender ELSE receiver END)
) q ON q.contact IN (t.sender, t.receiver)
WHERE 'Ali' IN (t.sender, t.receiver)
ORDER BY q.minTs, q.contact, t.sendDate, t.sendTime;

使用CASE语句创建计算列,如果接收方是Ali,则将其值设置为发送方,如果发送方是Ali,则将其值设置为接收方。

按此列和日期排序

我来自Java。我不使用SQL。但我之前也遇到过类似的问题,我将解释我是如何解决它的:我创建了一个对象类型为Class的数组列表。在你的情况下,这些是电话或信息。这些对象有特定的数据。然后,我将使用模型向列表中添加数据并更改模型,而不是列表。然后,我将创建一个包含数据的2D字符串数组。当你改变数据时,你只需要重新安排2D Array的创建方式。还可以使用循环来创建2D Array,这样你的列表就可以无限大。我用了所有的触发词。您可能希望自己研究一下如何使用SQL实现这一点。如果有帮助,请告诉我。

最新更新