java - 如何在 oracle 查询中将所有相似的行数据视为一个?
问题描述
我有一个系统,我需要在其中获取存储在名为 tg800 的 SMS 网关中的所有消息。
我正在使用在 tomcat 中运行的 Spring MVC 开发它。
我将所有收到的消息存储到一个名为
SMS_MESSAGES
CREATE TABLE CWMS_USER.SMS_MESSAGES
(
MESSAGE_ID VARCHAR2(4000 CHAR),
SENDER VARCHAR2(4000 CHAR),
SMSC VARCHAR2(13 CHAR),
PORT_ID VARCHAR2(1 CHAR),
CONTENT VARCHAR2(4000 CHAR),
RECEIVE_TIME VARCHAR2(30 CHAR),
HAS_READ VARCHAR2(3 CHAR),
IS_ASSIGNED_TO_TICKET VARCHAR2(50 CHAR),
ID NUMBER NOT NULL,
MESSAGE_STATUS VARCHAR2(20 CHAR),
TYPE_OF_MESSAGE VARCHAR2(20 CHAR) NOT NULL
)
我将所有发送的消息存储到一个名为
SMS_REPLY
CREATE TABLE CWMS_USER.SMS_REPLY
(
MESSAGE_ID VARCHAR2(4000 CHAR),
SENDER VARCHAR2(4000 CHAR),
SMSC VARCHAR2(13 CHAR),
PORT_ID VARCHAR2(1 CHAR),
CONTENT VARCHAR2(4000 CHAR),
RECEIVE_TIME VARCHAR2(30 CHAR),
HAS_READ VARCHAR2(3 CHAR),
IS_ASSIGNED_TO_TICKET VARCHAR2(50 CHAR),
ID NUMBER NOT NULL,
MESSAGE_STATUS VARCHAR2(20 CHAR),
TYPE_OF_MESSAGE VARCHAR2(20 CHAR) NOT NULL
)
当您打开消息应用程序时,您会看到号码、最新消息、收到日期等。按日期排序并按编号分组。这就是我需要看到的。
我遇到的问题是 TG800 存储数字的方式不同。
例如:在 SMS_MESSAGES 中,号码是 +639183478372
在 SMS_REPLY 中,号码是 639183478372
该查询不会将这两个数字视为一个数字,因为 SMS_MESSAGES 中的数字有一个加号。
我无法控制 TG800 如何存储号码。
有没有办法把它当作一个?
SELECT * FROM((SELECT * FROM SMS_MESSAGES
LEFT JOIN
(SELECT CONTACT_NAME, CONTACT_NO FROM SMS_CONTACTS) foo
ON SMS_MESSAGES.SENDER = foo.CONTACT_NO)
UNION
(SELECT * FROM SMS_REPLY
LEFT JOIN
(SELECT CONTACT_NAME, CONTACT_NO FROM SMS_CONTACTS) foo
ON SMS_REPLY.SENDER = foo.CONTACT_NO)) WHERE (SENDER, RECEIVE_TIME)
IN (SELECT SENDER, MAX(RECEIVE_TIME) FROM ((SELECT * FROM SMS_MESSAGES
LEFT JOIN
(SELECT CONTACT_NAME, CONTACT_NO FROM SMS_CONTACTS) foo
ON SMS_MESSAGES.SENDER = foo.CONTACT_NO)
UNION
(SELECT * FROM SMS_REPLY
LEFT JOIN
(SELECT CONTACT_NAME, CONTACT_NO FROM SMS_CONTACTS) foo
ON SMS_REPLY.SENDER = foo.CONTACT_NO)) GROUP BY SENDER,PORT_ID) ORDER BY RECEIVE_TIME desc
这是我正在使用的查询,它没有将相同的数字视为一个。
我需要把它作为一个,因为它们是相同的数字。请帮助我。
解决方案
推荐阅读
- javascript - history.push 更改 url 但不呈现表单反应钩子
- input - 输入文本robotframework appium不起作用
- r - 如何正确绘制R中给定椭圆的半长(半短)轴?
- r - 如何以自定义格式重组字符?
- laravel - Laravel 授权策略在显示页面上不起作用
- django - Ajax 请求未触发 Django 中 HTTPS 端口 443 上的进度事件
- sql - SQL将列中的日期与系统日期进行比较
- php - 使用 PHP 发送带有 PDF 附件的电子邮件 - 文件已损坏
- android - 在后退按钮上,如何在 XML 布局中定义的片段被另一个片段替换后显示
- node.js - 本地存储节点插件事件以供以后回调