SQL通过不工作区分/分组

SQL通过不工作区分/分组,sql,syntax,firebird,Sql,Syntax,Firebird,请容忍我,我对SQL非常陌生。我已经写出了下面的查询,但是DISTINCT基本上被WHERE语句否定了。这是因为表中的日期后面有一个时间戳,因此如果行项目的放置时间有任何差异,它将生成一个新行 让它完全忽略日期之后的所有内容,这样就不会因为时间戳而生成新行,最好的方法是什么?根据我的发现,我认为使用groupby可以更好地实现这一点,但是seams总是会生成错误(很可能我不知道将聚合函数放在哪里) 任何帮助都将不胜感激。谢谢大家! Select DISTINCT so.num AS Ref ,

请容忍我,我对SQL非常陌生。我已经写出了下面的查询,但是DISTINCT基本上被WHERE语句否定了。这是因为表中的日期后面有一个时间戳,因此如果行项目的放置时间有任何差异,它将生成一个新行

让它完全忽略日期之后的所有内容,这样就不会因为时间戳而生成新行,最好的方法是什么?根据我的发现,我认为使用groupby可以更好地实现这一点,但是seams总是会生成错误(很可能我不知道将聚合函数放在哪里)

任何帮助都将不胜感激。谢谢大家!

Select DISTINCT
 so.num AS Ref
,  so.shiptoname AS Recipient_Full_Name
, so.shiptoaddress AS Address_1
, so.shiptocity AS City
, stateconst.name AS State
, so.shiptozip AS Zip
, so.billtoname AS Buyer_Name
, qbclass.name AS Class
, soitem.datescheduledfulfillment AS Fulfillment_Date
From SO
JOIN stateconst
ON so.shiptostateid=stateconst.id
JOIN qbclass
ON so.qbclassid=qbclass.id
JOIN soitem
ON so.id=soitem.soid
WHERE DATESCHEDULEDFULFILLMENT LIKE '2016-05-10%'
使用
CAST()
datetime
数据类型更改为
date
类型:

Select DISTINCT
 so.num AS Ref
,  so.shiptoname AS Recipient_Full_Name
, so.shiptoaddress AS Address_1
, so.shiptocity AS City
, stateconst.name AS State
, so.shiptozip AS Zip
, so.billtoname AS Buyer_Name
, qbclass.name AS Class
, CAST(soitem.datescheduledfulfillment as date) AS Fulfillment_Date
From SO
JOIN stateconst
ON so.shiptostateid=stateconst.id
JOIN qbclass
ON so.qbclassid=qbclass.id
JOIN soitem
ON so.id=soitem.soid
WHERE CAST(soitem.datescheduledfulfillment as date) = '2016-05-10'

您真的需要查询输出中的日期吗?因为忽略它可以解决你的“问题”:

Select DISTINCT
 so.num AS Ref
,  so.shiptoname AS Recipient_Full_Name
, so.shiptoaddress AS Address_1
, so.shiptocity AS City
, stateconst.name AS State
, so.shiptozip AS Zip
, so.billtoname AS Buyer_Name
, qbclass.name AS Class

From SO
JOIN stateconst
ON so.shiptostateid=stateconst.id
JOIN qbclass
ON so.qbclassid=qbclass.id
JOIN soitem
ON so.id=soitem.soid
WHERE DATESCHEDULEDFULFILLMENT LIKE '2016-05-10%'

如果您不介意在输出中丢失
DateScheduledFulfillment
字段的时间部分,这肯定会起作用。我不知道为什么,但这也会产生错误。即使删除WHERE,也不会提取任何数据。我复制并粘贴以确保它是正确的,但仍然是错误的。这在Firebird上有关系吗?可能实际上需要在Firebird上
CAST()
,我会编辑。这非常有效!我现在得去查演员表了。:)谢谢你的帮助!