SQL Query中的数据重复

时间:2016-11-10 06:20:22

标签: sql sql-server

我遇到的问题是我的查询中存在数据重复。

问题就是这个问题。

我有一个包含以下数据的视图表: (PS_CX_FINC_SF_P_VW)

ID | Item_Term | Item_Amt | Item_Type | Date | Item_NO
------------------------------------------------------
005976 | 1609 | 3000.00 | C | 2016-09-27 | 00010

(PS_CX_FINC_SF_A_VW)

ID | Item_Term | Item_Amt | Item_Type | Date | Item_NO
--------------------------------------------

005976 | 1609   |     -50.00  |   P   |        2016-09-27  |  00009

005976 | 1609   |     -100.00 |   P   |        2016-10-04  |  00011

005976 | 1609   |     -50.00  |   P   |        2016-10-23  |  00012

我希望这是结果:

ID | Item_Amt | Date | Item_NO | Item_Amt | Date | Item_NO
----------------------------------------------

005976 | 3000.00 | 2016-09-27 | 00010 | -50.00 | 2016-09-27 | 00009

005976 | NULL | NULL | NULL | -100.00 | 2016-10-04 | 00011

005976 | NULL | NULL | NULL | -50.00 | 2016-10-23 | 00012

但我的结果变成了这样:

ID | Item_Amt | Date | Item_NO | Item_Amt | Date | Item_NO
----------------------------------------------------------

005976 | 3000.00 | 2016-09-27 | 00010 | -50.00 | 2016-09-27 | 00009

005976 | 3000.00 | 2016-09-27 | 00010 | -100.00 | 2016-10-04 | 00011

005976 | 3000.00 | 2016-09-27 | 00010 | -50.00 | 2016-10-23 | 00012

这是我的疑问:

SELECT A.ID, A.ITEM_AMT, A.DATE, A.ITEM_NO, B.ITEM_AMT, B.DATE, B.ITEM_NO
FROM PS_CX_FINC_SF_P_VW A 
LEFT JOIN PS_CX_FINC_SF_A_VW B ON (A.EMPLID = B.EMPLID AND A.ITEM_TERM = B.ITEM_TERM)
WHERE A.EMPLID = '00000005976'
AND A.ITEM_TERM = '1609'

要求是在一行中显示这两种类型的付款。我找不到让第一种类型的数据只显示1行的方法。

My Table key is 
ID , Item_Term, Date , Item_Type and Item_NO

1 个答案:

答案 0 :(得分:0)

尝试加入Date并使用表B作为主表表A在左联接中

SELECT B.ID, A.ITEM_AMT, A.DATE, A.ITEM_NO, B.ITEM_AMT, B.DATE, B.ITEM_NO
FROM PS_CX_FINC_SF_A_VW B
LEFT JOIN PS_CX_FINC_SF_P_VW A  ON (A.EMPLID = B.EMPLID AND A.ITEM_TERM = B.ITEM_TERM AND A.DATE = B.DATE)
WHERE B.EMPLID = '00000005976'
AND B.ITEM_TERM = '1609';

希望这可以解决你的问题。