SQL Server: выберите уникальные записи, используя отличное ключевое слово, но он возвращает все столбцы - PullRequest
0 голосов
/ 28 февраля 2019
select distinct  
    TM.Tranaction_Slno, TM.Created_On,
    convert(varchar(10), TM.Created_On, 120) as CreatedOn,  
    TT.Read_Time,
    convert(varchar(10), TT.Read_Time, 120) as ReadTime,        
    1 as 'Trailer Count', TMM.Trailer_RegNo, TT.Location,        
    (TD.Container_Number) Container_Number, CFM.CFS_Name,        
    convert(varchar(5), DateDiff(s, TM.Created_On, TT.Read_Time) / 3600) + ':' +        
       convert(varchar(5), DateDiff(s, TM.Created_On,  TT.Read_Time) % 3600 / 60) + ':'+        
       convert(varchar(5), (DateDiff(s, TM.Created_On, TT.Read_Time) % 60))  TimeDiff,        
    convert(varchar(5), DateDiff(hour, TM.Created_On, Read_Time)) [Time]
from 
    Transaction_Master TM         
inner join 
    Transaction_Data TD on TD.Tranaction_Slno = TM.Tranaction_Slno        
left join 
    Transaction_Track TT on TT.Transaction_Slno = TM.Tranaction_Slno 
inner join 
    CFSMaster CFM on TM.CFS_ID = CFM.CFS_Id        
inner join 
    TrailerMaster TMM on TM.Trailer_ID= TMM.Trailer_ID        
where 
    TM.Created_On between '2019-02-27 00:00:00' and '2019-02-27 23:59:59' 
    and TM.Tranaction_Slno = 1770575 

Я выбираю записи, которые будут возвращать только различные, но не возвращаются.Снимок экрана показан ниже:

enter image description here

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Я думаю, что это может сработать, чтобы получить 3 строки, обратите внимание, что я использовал только местоположение и транзакцию в разделе.

select * from (
select    TM.Tranaction_Slno, TM.Created_On,convert(varchar(10),TM.Created_On,120) as CreatedOn,  
TT.Read_Time,convert(varchar(10),TT.Read_Time,120) as ReadTime,        
1 as 'Trailer Count' ,TMM.Trailer_RegNo,TT.Location,        
(TD.Container_Number) Container_Number ,CFM.CFS_Name, row_number() over (partition by TM.Tranaction_Slno,TT.Location order by TM.Created_On desc) rownum           
convert(varchar(5),DateDiff(s, TM.Created_On, TT.Read_Time)/3600)+':'+        
convert(varchar(5),DateDiff(s, TM.Created_On, TT.Read_Time)%3600/60)+':'+        
convert(varchar(5),(DateDiff(s, TM.Created_On, TT.Read_Time)%60))  TimeDiff,        
convert(varchar(5),DateDiff(hour, TM.Created_On, Read_Time))  [Time]
from Transaction_Master TM         
inner join Transaction_Data TD on TD.Tranaction_Slno = TM.Tranaction_Slno        
left join Transaction_Track TT on TT.Transaction_Slno = TM.Tranaction_Slno 
inner join CFSMaster CFM on TM.CFS_ID = CFM.CFS_Id        
inner join TrailerMaster TMM on TM.Trailer_ID= TMM.Trailer_ID        
where TM.Created_On between '2019-02-27 00:00:00' and '2019-02-27 23:59:59' 
and TM.Tranaction_Slno=1770575 ) test 
where test.rownum = 1 
0 голосов
/ 28 февраля 2019

Здесь только для иллюстрации того, что я говорю в комментарии.

https://www.db -fiddle.com / f / 5CUuAwng7ZAyVinSo36Q5f / 0

0 голосов
/ 28 февраля 2019

Удалить из списка столбцов Container_Number.Вы получите только 3 строки.

Если вам нужна информация Container_Number, вы можете вместо этого использовать группу по.

...