1

我想显示 SQL Server 数据库中的唯一行。我有两个名为UploadedDataand的表DummyReportDetail。我想加入这些表,但我没有使用 distinct 获得唯一的行。

这是我的查询:

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

请帮助我...提前致谢

4

2 回答 2

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

按 T​​okenNo 添加分组

于 2012-12-31T08:57:30.533 回答
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

您可能还需要考虑重写您的查询以使用分组来替换“计数”字段的当前内部查询。连接表将比您当前的查询更有效,因为连接执行一次,而现在您的子查询为您在结果集中获得的每一行运行一次。

于 2012-12-31T08:57:50.080 回答