我试图通过连接2个现有临时表来在SQL中创建临时表。我的表看起来像:
我正在尝试加入这两张桌子。但是,如果我进行左连接,它会给我很多重复的行,表格如下所示:
如您所见,红色数据是重复的,只有第一行的数据是唯一的。我的代码如下:
select
CMO.CUSIP,
CMO.LEVEL1,
CMO.COUPON,
CMO.TRANCHE_GROUP as 'Tranche Group',
CMO.TRANCHE_TYPE as 'Tranche Type',
CMO.price as 'Current Price',
CMO.PREV_PRICE as 'Previous Price',
CMO.price_dec as 'Color',
cast (CMO.DataDate as date) as 'Color Date',
CMO.dealer as 'Dealer',
CHA.Challenge_Date,
CHA.Challenge_Price,
CHA.Updated_Price,
CHA.Client_Name,
CHA.Evaluator,
CHA.Accepted,
CMO.DATA_DATE
into #cmodatatable
from
#cmocolortemptable CMO
left join #challengetemptbl CHA on CMO.CUSIP = CHA.CUSIP1
select *
from #cmodatatable
有没有办法避免这种情况?我正试图获得这样的输出:
我将这些数据导出到Tableau中,并且计算Tableau中的不同值变得非常繁琐,这就是我尝试在SQL中执行此操作然后将数据带到Tableau的原因。我想我可能要做一个联盟,但由于表格中的数据不同,我不知道我将如何进行联盟。 在这方面,任何帮助都表示赞赏。 谢谢!
答案 0 :(得分:0)
您需要在第一个表中引入唯一性,方法是在表中包含row_number,然后加入它们:
示例:
CREATE TABLE #TEMP1(ID INT,NAME VARCHAR(10),AGE INT ,SEX VARCHAR(10))
CREATE TABLE #TEMP2(ID INT,COMP VARCHAR(10))
INSERT INTO #TEMP1 VALUES(1,'A',23,'M')
INSERT INTO #TEMP1 VALUES(1,'B',33,'M')
INSERT INTO #TEMP1 VALUES(1,'C',43,'M')
INSERT INTO #TEMP1 VALUES(1,'D',53,'M')
INSERT INTO #TEMP2 VALUES(1,'COMP')
;WITH CTE1 AS
(
SELECT *,ROW_NUMBER() OVER(ORDER BY ID) RNUM FROM #TEMP1
)
,CTE2 AS
(
SELECT *,ROW_NUMBER() OVER(ORDER BY ID) RNUM FROM #TEMP2)
SELECT * FROM CTE1 C1
LEFT OUTER JOIN CTE2 C2
ON C1.RNUM=C2.RNUM