如何删除表中相同的数据?亲,
每次我去菜单哪个“行”删除相同的数据,
想自动删除表中相同的数据,不知道JSL怎么写
我怎么写?
Re: 如何删除表中相同的数据?我刚从头开始,它对我有用。 尝试了 MIn() 和 Max() ,它给出了我的期望。
我确实注意到了几件事:
1. 当我告诉你我添加了第 1 列时,我忘了提到我将它初始化为连续数字。 IE 我基本上复制了行号。
2. 注意到您在表名周围使用了方括号,并且表名以“$”结尾。 这些是 MS 对 SQL 的看法。 尝试消除那些。
3. 不记得我是否告诉过你在自定义 sql 窗口中点击更新按钮,但在我运行查询之前似乎对我有所帮助。
Re: 如何删除表中相同的数据?
很遗憾地告诉你,它不能工作
警报是圆参考;
选择 t1.*
从 [溶解度$] t1,
(选择不同的“很多没有”,最小(“第 1 列”)作为“第 1 列” FROM [Solubility$] GROUP BY "LOT NO" ) AS t2
WHERE t1."Column 1" = t2."Column 1"
Re: 如何删除表中相同的数据?我继续并通过将子查询作为表重新完成它,以便您可以看到差异。 有时一种方法比另一种更有效或更清晰。 这里的“t1”和“t2”是别名。
选择 t1.*
从溶解度 t1,
(SELECT DISTINCT "LOT NO", Min("Column 1") AS "Column 1" FROM Solubility GROUP BY "LOT NO") AS t2
WHERE t1."Column 1" = t2."Column 1"
;
Re: 如何删除表中相同的数据?犯了一个小错误 - 使用 Min 将返回您的“删除”表。Re: 如何删除表中相同的数据?您的问题是您在所有溶解度列中使用 DISTINCT。 因为对于 LOT NO 1700002,您在列异常内容中具有唯一值(即'elec break'、'pin hole'),所以您不断地返回相同的行,因为每一行在列集中都是唯一的。
如果我没记错的话,Excel(即 M$)sql 有一个 FIRST 或 LAST 版本,SAS(即 JMP)没有(尽管在当前版本下可能已经改变。
这是我编写的代码,似乎可以回答您的问题:
选择 t2.*
从溶解度 t2
WHERE t2."Column 1" IN (
SELECT DISTINCT t1."第 1 列"
从溶解度 t1
按 t1 分组。“很多没有”
HAVING t1."Column 1" = Max(t1."Column 1"));
我在 JMP 中打开了溶解度
我添加了一列,第 1 列(将其视为排序/顺序列)
接下来我进入了表下的 SQL Query builder
选择 Solublity 作为表后,我选择了“第 1 列”和“批号”,我将在一个相关的子查询(即临时表)中使用它们,并仅检查 DISTINCT 行,然后单击添加
现在我单击查询名称旁边的三角形并选择转换为 Sql。 这将让我编写代码(30 年的 SAS - 点击和指向只能让你到目前为止)。
我将代码编辑为上面给你的内容,运行查询,纠正出现的任何错误,直到它运行正确。
基本上,我在上面提到的相关子查询的第 1 列上匹配了您修改后的溶解度。 子查询通过获取每组“批号”的最大第 1 列来返回唯一的“第 1 列”。 我在这里使用 Max() 作为最后的替代品。 Min() 可以用作 FIRST 的替代品。
我也可以将其作为另一个表的子查询上的 JOIN 来完成。 我们将把它留到明天。
我知道这可能很深奥,但是如果您有任何问题,请告诉我,我会尽力回答。
RCW
Re: 如何删除表中相同的数据?谢谢
带有excel“溶解度”的附件是我要修改的原始数据
附件“data.dsn”是数据库
我想要的结果是名为“delete”的atteched excel
我写“SELECT distinct [LOT NO],code,[abnormal content] FROM [Solubility$]”
删除“LOT NO”中相同的数据
但它行不通。
Re: 如何删除表中相同的数据?JMP 查询构建器允许您将 JSL 添加到查询中。查看第 121 页的文档
帮助==>书籍==>使用 JMP
它允许您在每次提取数据时将代码添加到查询中以自动删除所需的行。
Re: 如何删除表中相同的数据?谢谢
我使用 JMP 菜单的“Built Query”从数据库中获取数据,
@txnelson写道:
当您从数据库打开数据时,您必须将 JSL 添加到用于检索数据的脚本中。您使用什么方法从数据库中获取数据?
Re: 如何删除表中相同的数据?当您从数据库打开数据时,您必须将 JSL 添加到用于检索数据的脚本中。您使用什么方法从数据库中获取数据?
Re: 如何删除表中相同的数据?谢谢,
这数据表来自数据库,每次打开都会刷新数据。
所以我期待JSL 要自动重新执行以删除表中出现的相同数据。
@txnelson写道:
请说清楚。我很困惑。在您附加的数据表中,您有 2 列,“第一”和“第二”。如果要根据在名为“first”的列中找到“A”的值来删除行,则 JSL 将是:
dt = Current Data Table();
dt << Select Where( :first == "A") << Delete Rows;
如果您想根据名为“second”的列中的“A”值删除行,则 JSL 将是:
dt = Current Data Table();
dt << Select Where( :second == "A") << Delete Rows;
所以当你说“但是如果我刷新数据“............你是说,当你重新打开数据表时?您是否期望再次打开数据表时自动重新执行 JSL?
再次打开数据表时的数据。
Re: 如何删除表中相同的数据?请说清楚。我很困惑。在您附加的数据表中,您有 2 列,“第一”和“第二”。如果要根据在名为“first”的列中找到“A”的值来删除行,则 JSL 将是:
dt = Current Data Table();
dt << Select Where( :first == "A") << Delete Rows;
如果您想根据名为“second”的列中的“A”值删除行,则 JSL 将是:
dt = Current Data Table();
dt << Select Where( :second == "A") << Delete Rows;
所以当你说“但是如果我刷新数据“............你是说,当你重新打开数据表时?您是否期望再次打开数据表时自动重新执行 JSL?
Re: 如何删除表中相同的数据?谢谢,
但是如果我刷新数据,我不能自动删除下面的相同数据
dt = Current Data Table();
dt << Select Where( :Col1 == "A") << Delete Rows;
Re: 如何删除表中相同的数据?假设您可以编写一些条件来选择要删除的数据,请查看脚本索引中的 Select Where()。
例如:
dt = Current Data Table();
dt << Select Where( :Col1 == "A") << Delete Rows;
这将删除 Col1 中值为“A”的所有行。