不同的查询不是很明显

时间:2015-05-22 19:47:09

标签: sql-server-2008

我有以下查询...

Select
distinct r.LocSeq
,r.ChargeSeq
,r.Heat
,ISNULL(r.status,'') as status
,r.Grade
,r.FinalProd
,s.Location
,s.RollRecID
,s.ShiftIdent
,s.prodtime
,ts.Super
,ts.Oper
FROM (NYS1SawPieces s inner join NYS1Reheat r on r.LocSeq = s.rollrecid) 
join NYS1FinishShiftInfo ts on s.ShiftIdent = ts.ShiftID 
where s.ShiftIdent = '05/21/15154C' and s.Location = 'PILERS'
order by r.LocSeq , s.RollRecID

我需要帮助的麻烦是s.prodtime是千分之一秒的日期时间元素,这使我无法获得明确的回报。 我如何重新安排这个以获得不同的回报并仍然可以访问时间/日期戳?

感谢大家提供了一个很棒的网站和一些非常好的答案。

2 个答案:

答案 0 :(得分:0)

如果所有其他列相等,并且您只获得一行的1行,则可以使用聚合函数包围违规列并接收单个值。

例如:

Select
distinct r.LocSeq
,r.ChargeSeq
,r.Heat
,ISNULL(r.status,'') as status
,r.Grade
,r.FinalProd
,s.Location
,s.RollRecID
,s.ShiftIdent
,MIN(s.prodtime)
,ts.Super
,ts.Oper
FROM (NYS1SawPieces s inner join NYS1Reheat r on r.LocSeq = s.rollrecid) 
join NYS1FinishShiftInfo ts on s.ShiftIdent = ts.ShiftID 
where s.ShiftIdent = '05/21/15154C' and s.Location = 'PILERS'
order by r.LocSeq , s.RollRecID

请注意,这不是一个好的行为,但应解决您的问题。

答案 1 :(得分:0)

将日期时间四舍五入到最接近的秒数:

select distinct
--
CAST(CONVERT(VARCHAR, prodtime, 120) AS DATETIME) as prodtime,
--
-- rest of query the same

如果对新闻休息进行四舍五入仍然过于细粒度,则可以通过更改格式参数(参见文档)类似地舍入到其他金额。