2012-12-31 99 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 

您可以另外还需要考虑重写查询中使用分组,以取代目前的内部查询,为“伯爵“字段。加入表格会比当前查询更有效,因为联接只执行一次,而现在,您的子查询对结果集中的每一行运行一次。