2017-07-24 63 views
1

經過大量的工作,我做這個(正確的)查詢(在()中加入關於X):替代跨應用

select count(distinct t1.code+t1.flname+t1.col1+t2.flname) 
from #t4 t1 cross apply (select flname from #t4 sq where sq.col1=t1.col1)t2 

經過大量的更多的工作,我沒有產生equivelant查詢,而無需使用交叉申請。可能嗎?也許用WITH?如何不使用WITH?

+0

你的「正確」的查詢可能是不正確的。將4列連接在一起可能會導致碰撞。 –

+0

由於我所知的領域的性質,這是非常不可能的。 –

回答

1

一個簡單join應該是等價的:

select count(distinct t1.code + t1.flname + t1.col1 + sq.flname) 
from #t4 t1 join 
    #t4 sq 
    on sq.col1 = t1.col1; 
+0

口頭上,我想要做的是:對於#t4的每條記錄,給我一個包含與該記錄共享col1的所有flname的交叉產品。因此,t1.col1 = t2.col2不應該用於內部連接,而應該用作返回一組行以交叉連接的手段。 –