Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在oracle中获取重复值_Oracle - Fatal编程技术网

如何在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值,它添加了空记录。我该怎么办。你能帮帮我吗??