2012-12-31 100 views
1

我想從SQL Server數據庫顯示唯一的行。我有兩個名爲UploadedDataDummyReportDetail的表格。我想加入這些表格,但我沒有使用獨特的獨特行。SQL Server中的唯一行

這是我的查詢:

SELECT DISTINCT 
    D.TokenNo, D.UploadDate AS "Date", D.[Time], 
    D.SMSContent AS [Message], D.SMSType AS [SMS Type], 
    (SELECT COUNT(d.MobNo) FROM dbo.DummyReportDetail AS d 
    WHERE d.UploadDate = '31/12/2012' AND d.UserID = '2' 
     AND d.UserType = 'Reseller' AND d.TokenNo = U.TokenNo) AS "Count", 
    D.DStatus AS "Status" 
FROM  
    dbo.DummyReportDetail AS D 
INNER JOIN 
    dbo.UploadedData AS U ON D.TokenNo = U.TokenNo 
WHERE 
    D.UploadDate = '31/12/2012' AND D.UserID = '2' 
    AND D.UserType = 'Reseller' AND D.TokenNo = U.TokenNo 
ORDER BY 
    D.TokenNo DESC 

我的這個查詢的輸出是:

Token-4 31/12/2012 11:23:59 AM संपादकीय Unicode 2 SUBMITED 
Token-4 31/12/2012 11:24:9 AM संपादकीय Unicode 2 SUBMITED 
Token-3 31/12/2012 10:21:31 AM TestSMS Normal 1 SUBMITED 

但我想這樣的輸出:

Token-4 31/12/2012 11:24:9 AM संपादकीय Unicode 2 SUBMITED 
Token-3 31/12/2012 10:21:31 AM TestSMS Normal 1 SUBMITED 

請幫我... 在此先感謝

+0

你在輸出中得到的那三行是**不是**重複的 - 它們在不同的列上有所不同 - 這就是爲什麼DISTINCT不能擺脫它們的原因...... –

回答

1
select distinct D.TokenNo, D.UploadDate as "Date",D.[Time], D.SMSContent as "Message",D.SMSType as "SMS Type", 
     (select count (d.MobNo) from dbo.DummyReportDetail as d 
      where d.UploadDate='31/12/2012' and d.UserID='2' 
      and d.UserType='Reseller' and d.TokenNo=U.TokenNo) as "Count" 
      ,D.DStatus as "Status" 
    from dbo.DummyReportDetail as D join dbo.UploadedData as U 
    on D.TokenNo=U.TokenNo 
    where D.UploadDate='31/12/2012' and D.UserID='2' 
    and D.UserType='Reseller' and D.TokenNo=U.TokenNo group by D.tokenNo order by D.TokenNo desc 

添加組通過標記號

0

您將需要應用分組才能實現所需。 在這種情況下,你需要組上的每一列,並獲得最大日期:

select D.TokenNo, D.[Time], D.SMSContent as "Message",D.SMSType as "SMS Type", 
(select count (d.MobNo) from dbo.DummyReportDetail as d 
    where d.UploadDate='31/12/2012' and d.UserID='2' 
    and d.UserType='Reseller' and d.TokenNo=U.TokenNo) as "Count" 
    ,D.DStatus as "Status", MAX(D.UploadDate) as "Date" 
from dbo.DummyReportDetail as D join dbo.UploadedData as U 
on D.TokenNo=U.TokenNo 
where D.UploadDate='31/12/2012' and D.UserID='2' 
group by D.TokenNo, D.[Time], D.SMSContent, D.SMSType, Count, D.DStatus 
and D.UserType='Reseller' and D.TokenNo=U.TokenNo order by D.TokenNo desc 

您可以另外還需要考慮重寫查詢中使用分組,以取代目前的內部查詢,爲「伯爵「字段。加入表格會比當前查詢更有效,因爲聯接只執行一次,而現在,您的子查詢對結果集中的每一行運行一次。