2011-03-22 97 views
0

我想從交易表的UserId應該是不同的,所以你可以告訴我如何我可以得到不同的用戶ID形式的內部聯接的交易表?如何使用不同內部聯接有子查詢

SELECT  TransactionMaster.TransId, TransactionMaster.UserId, TransactionMaster.SessionId, TransactionMaster.TotalAmount, TransactionMaster.PaymentStatus, 
         TransactionMaster.TransDate, TransactionMaster.ShippingId, TransactionMaster.IPAddress, TransactionMaster.IsShipped, TransactionMaster.DeliveredDate, 
         Register.ID, Register.Password, Register.FirstName, Register.LastName, Register.MiddleName, Register.Address, Register.CountryId, Register.StateId, 
         Register.CityId, Register.Email, Register.Status, Register.IPAddress AS Expr1, Register.Account, Register.ZipCode 
FROM   TransactionMaster INNER JOIN 
         Register ON TransactionMaster.UserId = Register.ID 
WHERE(TransactionMaster.UserId IN (SELECT Distinct UserId FROM TransactionMaster WHERE TransactionMaster.UserId IN(SELECT UserId FROM TransactionMaster))) 

現在,我得到輸出繼電器:

**Transid        UserId  sessioId   otherfields** 

Ai36Lft9X4PrHg8p7BTs2n5K5Dcz4E  z8CFj92M  dzwsyf55s1io1e552ifty555 
d3YAs6j4L2SxJm95PeDn78NbCq49By  f4M5Rmr9  1u0mkd45rt5jz455axcvbgbd 
k6Z5LiYp39CnBs24Gca8D7Sfw8J6Xd  f4M5Rmr9  zo1gwz45gtbg3uegkkf21dmz 

但我想這種類型的輸出

**Transid         UserId  sessioId  otherfields** 

Ai36Lft9X4PrHg8p7BTs2n5K5Dcz4E  z8CFj92M  dzwsyf55s1io1e552ifty555 
d3YAs6j4L2SxJm95PeDn78NbCq49By  f4M5Rmr9  1u0mkd45rt5jz455axcvbgbd 
+0

嘗試在子查詢中的事務主 – V4Vendetta 2011-03-22 07:17:24

回答

0

第一家門店臨時表(#TempTrans)即將到來的輸出,那麼這樣做:

SELECT DISTINCT UserID FROM #TempTrans 
+0

由於有一個用戶超過一個sessionIds和的sessionId應該輸出的部分的不同選擇將不使用一些別名幫助他。如果只有用戶ID是必需的,然後一個不同的將有所幫助:SELECT DISTINCT TransactionMaster.UserId FROM ... – Sascha 2011-03-22 07:19:58

1

按UserId分組,然後決定哪些聚合適用於其餘列。我認爲這可能會很難...

你的問題是,一個獨特的選擇總是適用於所有列。所以你唯一的辦法就是分組,但是有一個組要求你在每一列你想要顯示的聚合函數。你提供了很少的關於你想要的線索的信息,如果這可以工作的話。

2

您可以使用cterow_number()來獲得不同的用戶標識。 這是一個簡化的版本,您應該可以將其應用於更復雜的查詢。

declare @T table(TransID varchar(50), UserID varchar(8), SessionID varchar(50)) 

insert into @T values 
('Ai36Lft9X4PrHg8p7BTs2n5K5Dcz4E',  'z8CFj92M',  'dzwsyf55s1io1e552ifty555'), 
('d3YAs6j4L2SxJm95PeDn78NbCq49By',  'f4M5Rmr9',  '1u0mkd45rt5jz455axcvbgbd'), 
('k6Z5LiYp39CnBs24Gca8D7Sfw8J6Xd',  'f4M5Rmr9',  'zo1gwz45gtbg3uegkkf21dmz') 

;with cte as 
(
    select 
    *, 
    row_number() over(partition by UserID order by SessionID) as rn 
    from @T 
) 
select * 
from cte 
where rn = 1 

結果

TransID      UserID SessionID    rn 
d3YAs6j4L2SxJm95PeDn78NbCq49By f4M5Rmr9 1u0mkd45rt5jz455axcvbgbd 1 
Ai36Lft9X4PrHg8p7BTs2n5K5Dcz4E z8CFj92M dzwsyf55s1io1e552ifty555 1 
+0

謝謝...它的工作正常.. – Bhoomi 2011-03-22 09:46:57