查询问题 急急急-查询两个表的数据,然后第一个表的数据存在相同时,则只显示一行,其他的显示为空

问题描述

查询两个表的数据,然后第一个表的数据存在相同时,则只显示一行,其他的显示为空


如上图,第一个表的字段包含 内码、编号、客户、日期,第二个表包含出库单等字段,现在查询出来的数据,只要内码相同,则对应的内码、编号、客户、日期都显示为空,该如何写SQL语句,原SQL语句如下

select t1.内码,t1.编号,t1.客户,t1.日期,t2.出库单
from SEOrder t1 join icstockbill t2 on t1.FInterID=t2.FInterID

解决方案

danielinbiti 思路是可以的,但是结果不对把
既然人家内联可以出所有结果, 表icstockbill和SEOrder都会有重复的内码啊,稍微改下

select t2.出库单,
case when t2.RN = 1 then t1.内码 else '' end as 内码,
case when t2.RN = 1 then t1.编号 else '' end as 编号,
case when t2.RN = 1 then t1.客户 else '' end as 客户,
case when t2.RN = 1 then t1.日期 else '' end as 日期
from
(select 出库单, 内码, ROW_NUMBER()OVER(PARTITION BY 内码 ORDER BY 内码) AS RN FROM icstockbill) t2
join
(select 内码,编号,客户,日期 FROM SEOrder) t1
on t2.FInterID=t1.FInterID

解决方案二:

select t1.内码,t1.编号,t1.客户,t1.日期,t2.出库单
from SEOrder t1 join icstockbill t2 on t1.FInterID=t2.FInterID

建议你把数据处理出来后,在前台处理起来比较方便,或者在后台用存储过程,定义一个游标,判断一下如果等于上一行的值就设置编号等为空

解决方案三:

换个思路,你这相当于就是出库单是左表,然后与第一张表左连接。因为相同的内容要是空行,那再加一个行号。如果内码相同,内码内的行号一样,则有记录
SQLServer和Oracle的如下,MySQL的参见我微薄原来写的怎么实现ROW_NUMBER
 select t1.内码,t1.编号,t1.客户,t1.日期,t2.出库单
from
  (select 出库单,ROW_NUMBER()OVER(PARTITION BY 内码 ORDER BY 内码) AS RN FROM icstockbill) t2
  left join
  (select 内码,编号,客户,日期,ROW_NUMBER()OVER(PARTITION BY 内码 ORDER BY 内码) AS RN FROM SEOrder) t1
  on t2.FInterID=t1.FInterID and t2.rn=t1.rn
时间: 2024-09-17 04:31:21

查询问题 急急急-查询两个表的数据,然后第一个表的数据存在相同时,则只显示一行,其他的显示为空的相关文章

急急急,。。。。。.net导出excel表,其中表头有几个列名是相同的怎么导出

问题描述 急急急,......net导出excel表,其中表头有几个列名是相同的怎么导出空空空联系地址商品名称 解决方案 解决方案二:相同的列名看你是想怎么展示了解决方案三:如果位置固定可以使用索引进行获得sheet[0]解决方案四:通过sheet获取表格Rangerange=datasheet.get_Range("A1","A2535");获取区域stringvalue=values.GetValue(i,j).ToString();获取单元格解决方案五:个人觉

sql-求问大神SQL,如何关联两张表后,将第二张表的数据插入第一张表数据第一行后面(详细内容在图片中)

问题描述 求问大神SQL,如何关联两张表后,将第二张表的数据插入第一张表数据第一行后面(详细内容在图片中) 刚注册,无法悬赏,求答案啊~~~~(>_<)~~~~ 解决方案 以前写的SQLServer和Oracle两张表一一对应的SQLhttp://blog.csdn.net/danielinbiti/article/details/43231879 解决方案二: insert into 表1(订单编号,SKU)select 订单编号,订单退款 from 表2

oracle-SQL语句查询问题,求高手指教,急急急

问题描述 SQL语句查询问题,求高手指教,急急急 有两个表 b1: name id zhangsan 111 b2: username no lisi 222 一条查询语句,需要查询出的结果是: mc bm zhangsan 111 lisi 222 解决方案 select b1.name as mc, b1.id as bm, b2.username as mc, b2.no as bm from b1,b2 解决方案二: if object_id('Tempdb..#msglist') is

android-安卓百度地图开发,急急急~

问题描述 安卓百度地图开发,急急急- 安卓百度地图开发时,我用的是真机测试的,只出现网格,没有建筑物信息,也不知道怎么回事,该注意的我也注意了 解决方案 求各位大神指点迷津,谢谢 解决方案二: 急急 解决方案三: 你打包运行的时候就有地图了 解决方案四: debug时是没有加入认证文件的,按百度地图的说明配置好API key,然后用上面的build里的build apk 用密钥打包成apk放到手机里安装就会有地图了. 解决方案五: API key有问题没有? 解决方案六: API key有问题没

实现PowerBuilder数据窗口的多表更新

PowerBuilder的数据窗口对象是其特有的智能对象,其封装性好.功能强大.表现形式丰富多样,为此,许多MIS开发人员对PowerBuilder推崇备至,将其视为首选开发工具. 一般情况下,一个数据窗口只能更新一个数据库表,但在MIS开发过程中,我们经常遇到这种情况:一个数据窗口中由两个或更多个数据库表作为数据源,并需要对其进行录入或修改,如何给出多表更新的通用解决方案就成为MIS开发人员不容回避的问题.笔者在某管理信息系统的开发过程中,尝试了几种双表更新的解决方法,选出一种比较好的方案,以

mysql-MySQL中关联查询两个表的问题,在线等!!!急急急

问题描述 MySQL中关联查询两个表的问题,在线等!!!急急急 两个表的关联查询,却出现的笛卡尔积的问题,所以查出来的数据并不是我想要的 该怎么办呀 解决方案 你怎么查询的,关联的一侧不是主键或者唯一值,那么就是笛卡尔集. 解决方案二: 换言之,如果是N:N查询,那么所有匹配的组合都会被查询出来.确保你的查询是1:N N:1或者1:1 如果你一侧不是1,那么可以用distinct或者group by先变成唯一的. 解决方案三: 关联条件是如何做的 是不是有正确的join起来 解决方案四: 使用f

急求从两张数据表中抽取个别列,查询后组合成一张新表,如何做?

问题描述 A表包含字段ABCDB表包含EFC表字段ABCDEF从winform上查询完A表和B表的数据之后,选择某条A和某条B点击按钮生成一条新的C表数据如何操作代码怎么样 解决方案 解决方案二:数据库可以直接做,也可以用linq解决方案三:可以写一个类C,包含ABCDEF属性,然后选中A表中的字段,给C的ABCD赋值,选中B表,赋值EF,然后增加到C表中~解决方案四:获取选择的A与B对象,拼接insertsql语句,inserttableC(A,B,C......)Values(A.A,A.B

SQL Server数据库查询问题,感谢!!急急急

问题描述 SQL Server数据库查询问题,感谢!!急急急 这是数据库中的两张表,请问怎样使用SELECT将两张表做成 ID SUBSUM SUB 1234 0 3 3456 5 6 7777 0 0 9990 32 35 就是两张表中相同ID的subsum和sum相加 ,不同的ID不变. 解决方案 SELECT ID,SUM(SUBSUM) SUBSUM,SUM(SUB) SUM FROM ( SELECT ID,SUBSUM ,SUB FROM 表1 union all SELECT ID

mysql优化-急急急!!mysql,查询中ORDER BY A,B,C DESC 太慢,如何优化??

问题描述 急急急!!mysql,查询中ORDER BY A,B,C DESC 太慢,如何优化?? 急急急!!mysql,查询中ORDER BY A,B,C DESC 太慢,如何优化??急急急!!mysql,查询中ORDER BY A,B,C DESC 太慢,如何优化?? 查询50万条数据,慢死了 解决方案 建立A,B,C的联合索引 解决方案二: 在ABC上建立索引 select * from 表 where id between 0 and (select max(id) from 表) ord