Sql 搜索具有相同日期的记录
确定同一表中日期相同的记录的最佳方法是什么 我的分期付款表中有两行:Sql 搜索具有相同日期的记录,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,确定同一表中日期相同的记录的最佳方法是什么 我的分期付款表中有两行: ORDER_1 | 13 | Paid | 2017-02-01 00:00:00.000 | ORDER_2 | 14 | Paid | 2017-02-01 00:00:00.000 | 我需要能够显示日期相同的所有分期付款 我试过: SELECT * FROM ORDER_INSTALMENT WHERE DATEDUE = DATEDUE 如果在表中使用索引,即使结果和速度是相同的,也可以使用distinct
ORDER_1 | 13 | Paid | 2017-02-01 00:00:00.000 |
ORDER_2 | 14 | Paid | 2017-02-01 00:00:00.000 |
我需要能够显示日期相同的所有分期付款
我试过:
SELECT * FROM ORDER_INSTALMENT WHERE DATEDUE = DATEDUE
如果在表中使用索引,即使结果和速度是相同的,也可以使用distinct来简化:
SELECT DISTINCT a.OrderID, a.InstalmentID, a.InstalmentSatus, a.DateDue
FROM ORDER_INSTALMENT AS a INNER JOIN ORDER_INSTALMENT AS b
ON a.DATEDUE = b.DATEDUE
AND a.OrderID <> b.OrderID
ORDER BY a.DATEDUE
您可以使用exists或内部联接:
SELECT *
FROM ORDER_INSTALMENT o
WHERE EXISTS
(
SELECT 1
FROM ORDER_INSTALMENT i
WHERE o.DATEDUE = i.DATEDUE
AND i.<UniqueColumnName> <> o.<UniqueColumnName>
)
所有字段名都是什么?OrderID、InstalmentID、InstalmentSatus、DateDueAdde:如果DateDue确实是一个日期,那么它应该是一个日期,而不是DateTime或其他包含时间组件的数据类型。group by子句在您的查询中是多余的。谢谢。。。我会切换到第一个查询回来,你的第二个查询是好的;所有其他的分期付款都在展出。我只需要有问题的分期付款就可以了。。也就是那些日期相同的。谢天谢地,直到不需要分组,你所要做的就是在on子句中添加第二个条件…@PriceCheaperton:再次检查;
SELECT *
FROM ORDER_INSTALMENT o
WHERE EXISTS
(
SELECT 1
FROM ORDER_INSTALMENT i
WHERE o.DATEDUE = i.DATEDUE
AND i.<UniqueColumnName> <> o.<UniqueColumnName>
)
SELECT DISTINCT t1.*
FROM ORDER_INSTALMENT t1
INNER JOIN ORDER_INSTALMENT t2
ON t1.DATEDUE = t2.DATEDUE
AND t1.<UniqueColumnName> <> t2.<UniqueColumnName>
;WITH CTE AS
(
SELECT DATEDUE, COUNT(*) As NumberOfRows
FROM ORDER_INSTALMENT
GROUP BY DATEDUE
)
SELECT *
FROM ORDER_INSTALMENT t
INNER JOIN CTE
ON t.DATEDUE = CTE.DATEDUE
WHERE NumberOfRows > 1