我有一个按特定ID分组的报告,这意味着某些信息必须重复。在这种情况下,每个参考数字都有多个与之相关联的专利记录。因此,如果有4个专利,它将正确返回4行,但引用ID、提交日期和标题将在所有4行中重复,而其他列显示唯一信息。
有没有可能在第2-4行有这个回车空格,以便我只看到一次“公共”信息?
这就是我目前所看到的。
Reference-1 July 1, 2019 Title here Acme, Inc. ABCD-1234 Patent 1
Reference-1 July 1, 2019 Title here Acme, Inc. ABCD-1234 Patent 2
Reference-1 July 1, 2019 Title here Acme, Inc. ABCD-1234 Patent 3
Reference-1 July 1, 2019 Title here Acme, Inc. ABCD-1234 Patent 4有没有可能让它返回这个?我想要返回相同的行,只是没有重复的值。
Reference-1 July 1, 2019 Title here Acme, Inc. ABCD-1234 Patent 1
Patent 2
Patent 3
Patent 4下面是我的代码的当前版本:
SELECT
i.reference_id AS "Reference Number",
i.submission_dt AS "Submission Date",
i.title AS "Title",
o.name AS "Sponsor",
o.grant_number AS "Grant Number",
p.patent_id AS "IP Reference"
FROM
invention i
LEFT OUTER JOIN
organization2invention o2i ON o2i.invention_id = i.invention_id
LEFT OUTER JOIN
organization o ON o2i.organization_id = o.organization_id
LEFT OUTER JOIN
patent2invention pt2i ON pt2i.invention_id = i.invention_id
LEFT OUTER JOIN
patent p ON pt2i.patent_id = p.patent_id
WHERE
o.grant_number = "ABCD-1234"
group by p.patent_id
order by i.reference_idETA:在此示例中,标题永远不会在专利3和专利4之间更改。除了专利列之外,所有列都是链接的,并且将保持不变。
但是,也可能存在另一组引用-2的记录,我希望所有字段在第一次出现引用-2时显示,而不是在其他时间显示。
Reference-1 July 1, 2019 Title here Acme, Inc. ABCD-1234 Patent 1
Patent 2
Patent 3
Patent 4
Reference-2 July 1, 2019 Title here Acme, Inc. ABCD-1234 Patent 5
Patent 6
Patent 7
Patent 8版本5.7.22
ETA2:我正在从一个基于web/云的数据库中提取数据,这个数据库的UI非常差劲。他们内置了一个页面,这个页面有一个MySQL代码输入框和一个按钮,上面写着"Run Query“,因为他们的界面没有以我们需要的方式提供数据。我只有只读访问权限,他们的显示器不能识别某些东西(比如\n),而且它有一些内置的格式化标签(类似于my_object_id AS "My Object|display_name:MyObject")。
当我点击"Run Query“时,网页的底部会返回显示。
此功能旨在用作“自定义报告”,因此显示很重要。除了直接的MySQL代码之外,他们没有给我一种方法来做这件事。
发布于 2019-07-02 01:26:15
这个答案不会输出完美的布局,因为布局不是用来处理
的。As stated by Strawberry -“考虑改为处理应用程序代码中的数据显示问题”
..。
操作状态:
mysql我被限制在一个文本输入框中,只允许
代码对数据进行只读访问。
因此,MySQL视图是不可能的,并且可以通过显示输出处理器(PHP等)来整理结果。是一个未知变量。
OP还声明:
除了专利列之外的所有列都是链接的,并且将保持不变
所以;
尝试扭转这个问题;您需要一个完整的结果,其中包含专利数据的多次迭代。您可以在更改列patent_id列上执行此using GROUP_CONCAT操作。您还必须选择引用列的不同值,但用于获得所需结果的SQL select编辑相当少:
SELECT
DISTINCT i.reference_id AS "Reference Number",
i.submission_dt AS "Submission Date",
i.title AS "Title",
o.name AS "Sponsor",
o.grant_number AS "Grant Number",
GROUP_CONCAT(p.patent_id SEPARATOR '\\n') AS "IP Reference"
FROM
invention i
LEFT OUTER JOIN
organization2invention o2i ON o2i.invention_id = i.invention_id
LEFT OUTER JOIN
organization o ON o2i.organization_id = o.organization_id
LEFT OUTER JOIN
patent2invention pt2i ON pt2i.invention_id = i.invention_id
LEFT OUTER JOIN
patent p ON pt2i.patent_id = p.patent_id
WHERE
o.grant_number = "ABCD-1234"
GROUP BY i.reference_id,
ORDER BY i.reference_id这将产生一组带有"Reference 1“的行,例如,具有与该引用相关的所有不同p.patent_id值的GROUP CONCAT,在这种情况下由换行符分隔。
\n是标准的换行符(在MySQL中作为\\n进行转义)。您可以根据需要调整此SEPERATOR。
您没有向我们提供有关显示机制的任何线索,但是如果您要输出到一个HTML表中,您可能可以插入任何您喜欢的内容,甚至可以将HTML语言插入到SEPERATOR子句中。
GROUP_CONCAT(p.patent_id SEPARATOR
'</td></tr><tr><td colspan="5"> </td><td>') AS "IP Reference"您还可以使用DISTINCT子句从专利列表中删除重复项。
输出:
参考- 1 2019年7月1日标题Acme,Inc. ABCD-1234专利1专利2专利3专利4参考-2 7月1日,2019年标题Acme,Inc. ABCD-1234专利5专利6专利7专利8
https://stackoverflow.com/questions/56839163
复制相似问题