如何在oracle中获取重复值
嗨,我已经使用左连接从各种表中选择了以下列,我得到了以下结果如何在oracle中获取重复值,oracle,Oracle,嗨,我已经使用左连接从各种表中选择了以下列,我得到了以下结果 Box_ID BOX_NAME VALUE PROM_EFFDATE PROM_CLOSEDATE 11 JE 1 115 2/27/2014 11 JE 2 80 2/27/2014 3/6/2014 11 JE 4 60 2/17/2014 11 JE 3 如果
Box_ID BOX_NAME VALUE PROM_EFFDATE PROM_CLOSEDATE
11 JE 1 115 2/27/2014
11 JE 2 80 2/27/2014 3/6/2014
11 JE 4 60 2/17/2014
11 JE 3
如果PROM_CLOSEDATE有一些值,则应再次显示具有null值和null effdate的等效框_名称(JE2)。我们可以为不同的周期时间输入任何其他不同的值。
这是实际的要求。结果应该是:
Box_ID BOX_NAME VALUE PROM_EFFDATE PROM_CLOSEDATE
11 JE 1 115 2/27/2014
11 JE 2 80 2/27/2014 3/6/2014
11 JE 2
11 JE 4 60 2/17/2014
11 JE 3
像这样,我必须得到价值
在这里,我按照san的指导使用
SELECT Box_ID,BOX_NAME, VALUE, PROM_EFFDATE, PROM_CLOSEDATE
FROM tab
UNION
SELECT Box_ID,BOX_NAME, NULL, NULL, NULL
FROM tab
WHERE PROM_CLOSEDATE IS NOT NULL
order by 2
但我希望得到更精确的结果。当我为JE2(第二次)事件输入值和生效日期(不提供结束日期)时,我得到以下输出
Box_ID BOX_NAME VALUE PROM_EFFDATE PROM_CLOSEDATE
11 JE 1 115 2/27/2014
11 JE 2 80 2/27/2014 3/6/2014
11 JE 2 90 4/6/2014
11 JE 2
11 JE 4 60 2/17/2014
11 JE 3
但实际上,我不需要带有NULL值、NULL生效日期、NULL closedate的记录,当BOX_名称(这里是JE2)有没有closedate的记录时。
我只需要当它有closedate的记录时不为空。即使有带值、生效日期和无结束日期的记录,也不应出现空记录。
这是我的要求。请帮我找到答案。最简单的方法是使用union all
WITH tab(Box_ID,BOX_NAME, VALUE, PROM_EFFDATE, PROM_CLOSEDATE) AS (
SELECT 11,'JE 1',115,'2/27/2014', NULL FROM dual UNION ALL
SELECT 11,'JE 2', 80,'2/27/2014','3/6/2014' FROM dual UNION ALL
SELECT 11,'JE 2', 90,'2/28/2014','3/7/2014' FROM dual UNION ALL
SELECT 11,'JE 4', 60,'2/17/2014', NULL FROM dual UNION ALL
SELECT 11,'JE 3', NULL, NULL, NULL FROM dual)
----------
--End of data preparation
----------
SELECT Box_ID,BOX_NAME, VALUE, PROM_EFFDATE, PROM_CLOSEDATE
FROM tab
UNION
SELECT Box_ID,BOX_NAME, NULL, NULL, NULL
FROM tab
WHERE PROM_CLOSEDATE IS NOT NULL
order by 2
输出:
| BOX_ID | BOX_NAME | VALUE | PROM_EFFDATE | PROM_CLOSEDATE |
|--------|----------|--------|--------------|----------------|
| 11 | JE 1 | 115 | 2/27/2014 | (null) |
| 11 | JE 2 | 80 | 2/27/2014 | 3/6/2014 |
| 11 | JE 2 | (null) | (null) | (null) |
| 11 | JE 3 | (null) | (null) | (null) |
| 11 | JE 4 | 60 | 2/17/2014 | (null) |
最简单的方法是使用UNIONALL
WITH tab(Box_ID,BOX_NAME, VALUE, PROM_EFFDATE, PROM_CLOSEDATE) AS (
SELECT 11,'JE 1',115,'2/27/2014', NULL FROM dual UNION ALL
SELECT 11,'JE 2', 80,'2/27/2014','3/6/2014' FROM dual UNION ALL
SELECT 11,'JE 2', 90,'2/28/2014','3/7/2014' FROM dual UNION ALL
SELECT 11,'JE 4', 60,'2/17/2014', NULL FROM dual UNION ALL
SELECT 11,'JE 3', NULL, NULL, NULL FROM dual)
----------
--End of data preparation
----------
SELECT Box_ID,BOX_NAME, VALUE, PROM_EFFDATE, PROM_CLOSEDATE
FROM tab
UNION
SELECT Box_ID,BOX_NAME, NULL, NULL, NULL
FROM tab
WHERE PROM_CLOSEDATE IS NOT NULL
order by 2
输出:
| BOX_ID | BOX_NAME | VALUE | PROM_EFFDATE | PROM_CLOSEDATE |
|--------|----------|--------|--------------|----------------|
| 11 | JE 1 | 115 | 2/27/2014 | (null) |
| 11 | JE 2 | 80 | 2/27/2014 | 3/6/2014 |
| 11 | JE 2 | (null) | (null) | (null) |
| 11 | JE 3 | (null) | (null) | (null) |
| 11 | JE 4 | 60 | 2/17/2014 | (null) |
最简单的方法是使用UNIONALL
WITH tab(Box_ID,BOX_NAME, VALUE, PROM_EFFDATE, PROM_CLOSEDATE) AS (
SELECT 11,'JE 1',115,'2/27/2014', NULL FROM dual UNION ALL
SELECT 11,'JE 2', 80,'2/27/2014','3/6/2014' FROM dual UNION ALL
SELECT 11,'JE 2', 90,'2/28/2014','3/7/2014' FROM dual UNION ALL
SELECT 11,'JE 4', 60,'2/17/2014', NULL FROM dual UNION ALL
SELECT 11,'JE 3', NULL, NULL, NULL FROM dual)
----------
--End of data preparation
----------
SELECT Box_ID,BOX_NAME, VALUE, PROM_EFFDATE, PROM_CLOSEDATE
FROM tab
UNION
SELECT Box_ID,BOX_NAME, NULL, NULL, NULL
FROM tab
WHERE PROM_CLOSEDATE IS NOT NULL
order by 2
输出:
| BOX_ID | BOX_NAME | VALUE | PROM_EFFDATE | PROM_CLOSEDATE |
|--------|----------|--------|--------------|----------------|
| 11 | JE 1 | 115 | 2/27/2014 | (null) |
| 11 | JE 2 | 80 | 2/27/2014 | 3/6/2014 |
| 11 | JE 2 | (null) | (null) | (null) |
| 11 | JE 3 | (null) | (null) | (null) |
| 11 | JE 4 | 60 | 2/17/2014 | (null) |
最简单的方法是使用UNIONALL
WITH tab(Box_ID,BOX_NAME, VALUE, PROM_EFFDATE, PROM_CLOSEDATE) AS (
SELECT 11,'JE 1',115,'2/27/2014', NULL FROM dual UNION ALL
SELECT 11,'JE 2', 80,'2/27/2014','3/6/2014' FROM dual UNION ALL
SELECT 11,'JE 2', 90,'2/28/2014','3/7/2014' FROM dual UNION ALL
SELECT 11,'JE 4', 60,'2/17/2014', NULL FROM dual UNION ALL
SELECT 11,'JE 3', NULL, NULL, NULL FROM dual)
----------
--End of data preparation
----------
SELECT Box_ID,BOX_NAME, VALUE, PROM_EFFDATE, PROM_CLOSEDATE
FROM tab
UNION
SELECT Box_ID,BOX_NAME, NULL, NULL, NULL
FROM tab
WHERE PROM_CLOSEDATE IS NOT NULL
order by 2
输出:
| BOX_ID | BOX_NAME | VALUE | PROM_EFFDATE | PROM_CLOSEDATE |
|--------|----------|--------|--------------|----------------|
| 11 | JE 1 | 115 | 2/27/2014 | (null) |
| 11 | JE 2 | 80 | 2/27/2014 | 3/6/2014 |
| 11 | JE 2 | (null) | (null) | (null) |
| 11 | JE 3 | (null) | (null) | (null) |
| 11 | JE 4 | 60 | 2/17/2014 | (null) |
此代码将起作用
此代码将起作用
此代码将起作用
此代码将起作用那又怎样?只需在数据准备结束后使用select部分,并用您的表名替换
选项卡
。它将适用于表中的所有记录。在这种情况下,您可以在第二个选项中使用distinct
,选择为select distinct Box\u ID,Box\u NAME,NULL,NULL,NULL FROM tab
或将union all
替换为union
。根据您的要求更新帖子。谢谢。工会运作良好。在此表中,PROM_EFFDATE是唯一必填字段。我们可以省钱而不必给出舞会结束日期。当我们保存记录而不提供PROM_CLOSEDATE时,不应添加空值记录。这是我的要求。但是由于我们已经添加了PROM_CLOSEDATE值,它添加了空记录。我该怎么办。你能帮帮我吗?那又怎样?只需在数据准备结束后使用select部分,并用您的表名替换选项卡
。它将适用于表中的所有记录。在这种情况下,您可以在第二个选项中使用distinct
,选择为select distinct Box\u ID,Box\u NAME,NULL,NULL,NULL FROM tab
或将union all
替换为union
。根据您的要求更新帖子。谢谢。工会运作良好。在此表中,PROM_EFFDATE是唯一必填字段。我们可以省钱而不必给出舞会结束日期。当我们保存记录而不提供PROM_CLOSEDATE时,不应添加空值记录。这是我的要求。但是由于我们已经添加了PROM_CLOSEDATE值,它添加了空记录。我该怎么办。你能帮帮我吗?那又怎样?只需在数据准备结束后使用select部分,并用您的表名替换选项卡
。它将适用于表中的所有记录。在这种情况下,您可以在第二个选项中使用distinct
,选择为select distinct Box\u ID,Box\u NAME,NULL,NULL,NULL FROM tab
或将union all
替换为union
。根据您的要求更新帖子。谢谢。工会运作良好。在此表中,PROM_EFFDATE是唯一必填字段。我们可以省钱而不必给出舞会结束日期。当我们保存记录而不提供PROM_CLOSEDATE时,不应添加空值记录。这是我的要求。但是由于我们已经添加了PROM_CLOSEDATE值,它添加了空记录。我该怎么办。你能帮帮我吗?那又怎样?只需在数据准备结束后使用select部分,并用您的表名替换选项卡
。它将适用于表中的所有记录。在这种情况下,您可以在第二个选项中使用distinct
,选择为select distinct Box\u ID,Box\u NAME,NULL,NULL,NULL FROM tab
或将union all
替换为union
。根据您的要求更新帖子。谢谢。工会运作良好。在此表中,PROM_EFFDATE是唯一必填字段。我们可以省钱而不必给出舞会结束日期。当我们保存记录而不提供PROM_CLOSEDATE时,不应添加空值记录。这是我的要求。但是由于我们已经添加了PROM_CLOSEDATE值,它添加了空记录。我该怎么办。你能帮帮我吗??