Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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
C# 通过在C中连接两个表,将SQL datatable导出到excel时删除重复的值_C#_Sql Server 2008 - Fatal编程技术网

C# 通过在C中连接两个表,将SQL datatable导出到excel时删除重复的值

C# 通过在C中连接两个表,将SQL datatable导出到excel时删除重复的值,c#,sql-server-2008,C#,Sql Server 2008,我必须连接两个具有多:多关系的表。1物料代码可以包含许多物料代码,反之亦然 执行SQL查询时,结果会输出所有从两侧匹配的行,如下所示: 但我不希望有重复的值 我期望的结果如下所示: 如何得到这样的结果 我的SQL查询是: SELECT DISTINCT x._PROCESS_INST_NO, x._GOODS_CD, x._QTY, y._GOODS_CD, Y._QTY FROM [TBL_PROC_PM] x FULL OUTER JOI

我必须连接两个具有多:多关系的表。1物料代码可以包含许多物料代码,反之亦然

执行SQL查询时,结果会输出所有从两侧匹配的行,如下所示:

但我不希望有重复的值

我期望的结果如下所示:

如何得到这样的结果

我的SQL查询是:

SELECT DISTINCT
    x._PROCESS_INST_NO,  
    x._GOODS_CD,
    x._QTY,
    y._GOODS_CD,
    Y._QTY
FROM 
    [TBL_PROC_PM] x
FULL OUTER JOIN 
    (SELECT  
         t._PROCESS_INST_NO,
         t._GOODS_CD,
         t._QTY
     FROM 
         [TBL_PROC_PMS] t) y ON y._PROCESS_INST_NO = x._PROCESS_INST_NO
WHERE 
    y._PROCESS_INST_NO IN ('631886', '635312')  
2个SQL表:

SELECT [_PROCESS_INST_NO]     
      ,[_GOODS_CD]     
      ,[_QTY]    
  FROM [TBL_PROC_PM]
   where _PROCESS_INST_NO IN ('631886', '635312')  

您是希望在单元格中为列中的后续重复值返回空白值,还是希望折叠重复结果?如果是后者,您可以尝试以下方法:

选择 x、 工艺仪表号, x、 _货物_CD, 汇总数量为[汇总汇总数量], 东西 选择“,”+\u商品\u CD 来自@TBL\U PROC\U PMS t2 式中t2.\u工艺安装编号=x.\u工艺安装编号 对于XML路径,1,1, 作为[PMS\U货物\U CD], 汇总数量为[汇总项目数量] 从@TBL_PROC_PM作为x 在y上以y的形式加入@TBL\U PROC\U PMS。工艺安装编号=x。工艺安装编号 由x.工艺、仪器编号、x.货物、CD分组; 这将通过分组删除重复项。我还将pms商品cd值与材料进行分组整理/连接。。。用于XML路径语法

另一方面,如果您想要空白值,那么类似的内容可能适合您:

使用cte AS-PM\U过程安装号、PM\U货物\U CD、PM\U数量、PM\U货物\U CD、PMS\U数量 选择 o、 工艺安装号为PM工艺安装号, o、 _GOODS_CD作为PM_GOODS_CD, o、 _数量作为PM_数量, f、 作为PMS货物CD, f、 _数量作为PMS_数量, 按o.划分的行编号,按o.划分的顺序,按o.划分的行编号,按o.划分的顺序,按o.划分的行编号,按GRP.划分的顺序, 按o.\U货物\U CD按o.\U货物\U CD订购为GRP\U货物\U CD划分的行编号, 分区上的行数按o.\U数量按o.\U数量订购作为GRP\U数量 来自@TBL_PROC_PM o 加入@TBL\U PROC\U PMS f ON f.\U流程安装编号=o.\U流程安装编号 选择 当GRP\U PROCESS\U INST\U NO=1时,cte.PM\U PROCESS\U INST\U NOR结束为PM\U PROCESS\U INST\U NO, 当GRP_GOODS_CD=1时,则cte.PM_GOODS_CD,否则结束为PM_GOODS_CD, 当GRP\U数量=1时,则cte.PM\U数量,否则结束为PM\U数量, cte.PMS\U货物\U CD, cte.PMS\U数量 来自cte; 如果数据类型支持空值,则返回空值


请分别显示这两个表的数据好吗?我已经分别添加了两个表。请检查这是总结结果。但我们需要每行的详细结果。对不起,你能再帮我一点吗!谢谢我希望在单元格中返回空白值,以用于列中的后续重复值。因为我们想检查货物和材料的细节。非常感谢你,卡洛·博斯。关于进程635312,右侧仍然有重复的值。如何将它们也清空?只需重复最后两列的case语句,就可以了
SELECT [_PROCESS_INST_NO]     
      ,[_GOODS_CD]     
      ,[_QTY]    
  FROM [TBL_PROC_PMS]
   where _PROCESS_INST_NO IN ('631886', '635312')