SQL 删除重复行,distinct吗?不知道怎么用才是正确的

刘二梦 2016-12-08 06:36:20
select
B.FNAME ,
A2.FBILLTYPEID,
A1.FMATERIALID ,
A2.FBILLNO,
C.FName AS 物料名称,
A2.FOWNEROUTID,
A2.FOWNERINID,
A3.FPRICE ,
A1.FQTY*A3.FPRICE AS FCOUNT, --成本价*调拨数量
A1.FQTY as FQTY1,
D.FTAXPRICE,
A1.FQTY *D.FTAXPRICE AS FCOUNT1, --含税单价*调拨数量
A1.FQTY *(D.FTAXPRICE -A1.FPRICE ) AS LR,
A2.FDATE
FROM
T_ORG_ORGANIZATIONS_l B
INNER JOIN T_STK_STKTRANSFEROUT A2 ON A2.FOWNEROUTID = B.FORGID
INNER JOIN T_STK_STKTRANSFEROUTENTRY A1 ON A1.FID=A2.FID
INNER JOIN T_STK_STKTRANSFERINENTRY_C A3 ON A3.FENTRYID = A1.FENTRYID
INNER JOIN T_BD_MATERIAL_L C ON C.FMATERIALID=A1.FMATERIALID
INNER JOIN T_IOS_PRICELISTENTRY D ON D.FMATERIALID=A1.FMATERIALID
INNER JOIN T_IOS_PRICELIST D2 ON D2.FID = D.FID

where A1.FMATERIALID = D.FMATERIALID
AND D2.FAUDITSTATUS = 'A'
AND A2.FDOCUMENTSTATUS = 'C'
AND A2.FTRANSFERBIZTYPE = 'OVERORGTRANSFER'
AND A2.FDATE >= '2016-09-01 00:00:00.000'
AND A2.FDATE <='2016-09-30 00:00:00.000'
AND D2.FEFFECTIVEDATE >= D.FEFFECTIVEDATE
AND D2.FEXPIRYDATE <= D.FEXPRIYDATE
AND A2.FBILLNO = 'FBDC000279'


GROUP BY A2.FDATE,B.FNAME,A1.FMATERIALID ,C.FName,A1.FQTY,A2.FOWNEROUTID,
A2.FOWNERINID,D.FMATERIALID,A2.FTRANSFERBIZTYPE,B.FORGID,A2.FDOCUMENTSTATUS ,
D2.FAUDITSTATUS,A1.FPRICE,FTAXPRICE,A1.FMATERIALID,A3.FPRICE,A2.FBILLTYPEID,A2.FBILLNO

代码意思,从7张表中取出一张表,表中含有需要的信息,一张企业的利润表。这是一张单据,单据编码‘FBDC000279’单据里面有8条信息,但是我查询出来了300条,大神们有没有思路,怎么修改???



...全文
466 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2016-12-09
  • 打赏
  • 举报
回复
用distinct就可以,或者用group by
道素 2016-12-09
  • 打赏
  • 举报
回复
你的问题恐怕不能简单用一句“重复行”概括 因为你关联和很多表,你首先先确定是哪个表表产生重复数据 然后确定重复的数据是否合理,如果是合理的业务数据,那么你要考虑修改你的SQL语句 另外也查下你关联表的ON条件是否哪个漏掉了某个关联条件 比如你用公司和员工表关联,那么如果公司有多个员工,返回的数据公司表记录就会重复 这是你如果想每个公司仅返回一行,那么就要以公司记录做Group By
卖水果的net 2016-12-08
  • 打赏
  • 举报
回复
单据编码‘FBDC000279’单据里面有8条信息,但是我查询出来了300条 楼主提供一些测试数据,和你想要的结果;

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧