需要知道如何从SQL中删除重复行以从各种表中获取数据;

时间:2015-08-09 04:15:12

标签: sql-server

我需要来自各种表格和下面的数据是我知道的唯一方法(我只知道基础知识)。下面的查询工作正常,但显示重复。我需要知道如何删除它们。

SELECT DISTINCT
    a.int_order_id, a.trans_id, a.wtn,a.isp_id,
    d.first_name, d.middle_initial, d.last_name,
    d.company_name, d.emaiL,
    a.ilec_lob, a.node_type_id, a.cddd,
    a.isp_ban, a.tos_version, a.isp_ckt_id,
    a.isp_circuit_type, a.atm_vpi, a.atm_vci, 
    a.frs_dlci, b.order_create_date, b.pon,
    b.order_status_id, e.trans_status_id,
    e.description, c.STREET_NUMBER, 
    c.STREET_NUMBER_SUFFIX, c.DIRECTIONAL_ID,
    c.street_name, c.thoroughfare_id, 
    c.street_suffix, c.address_line1, c.address_line2,
    c.unit_type_id, c.unit_value, c.city, c.state_id, c.zip 
FROM 
    VZEXTRACT1.vvov_os_ord_dsl A 
JOIN 
    VZEXTRACT1.vvov_os_order_details B ON a.int_order_id = b.int_order_id 
JOIN 
    VZEXTRACT1.vvov_os_ord_address C ON b.int_order_id = c.int_order_id 
JOIN 
    vzextract1.vvov_os_ord_contact D ON c.int_order_id = d.int_order_id 
JOIN 
    VZEXTRACT1.vv0v_trans_status E On b.order_status_id = e.trans_status_id 
WHERE 
    a.isp_id NOT IN (657,500) 
    AND B.ORDER_CREATE_DATE >= to_date('01-may-15') 
    AND B.ORDER_CREATE_DATE < to_date('30-JUL-15')

1 个答案:

答案 0 :(得分:0)

如果要删除重复的行,则必须使用

  1. 区别:它会考虑所有选定列的不同之处,因此即使您使用了不同的
  2. ,也必须找出因为哪一列获得重复行
  3. 分组依据:您可以使用分组依据来获取不同的行。您可以对列使用聚合函数,从而导致从第1点开始重复的行,并避免重复。
  4. over(partition by):您也可以将此子句用于导致重复的列。就像你连续这样的列的值, wm_concat(my_col)over(partition by id)