从相同日期确定记录的最佳方法是什么?正在搜索相同日期的记录
我从我的分期付款表2行:
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
从相同日期确定记录的最佳方法是什么?正在搜索相同日期的记录
我从我的分期付款表2行:
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
SELECT 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
GROUP BY a.OrderID, a.InstalmentID, a.InstalmentSatus, a.DateDue
ORDER BY a.DATEDUE
即使结果和速度是相同的,如果你在你的表使用的索引,可以使用不同的使简单:
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
group by子句在查询中是多余的。 –
谢谢...我会切换到第一个查询,第二个查询是好的;) –
所有其他分期付款显示。我只需要问题分期付款来显示.. I.E与同一日期的那些。谢谢 – 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>
请注意,您需要更改<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
什么是你所有字段名? –
OrderID,InstalmentID,InstalSetSatus,DateDue – PriceCheaperton
另外:如果'DateDue'确实是一个日期,它应该是一个'Date',而不是'DateTime'或其他包含时间组件的数据类型。 – HABO