我需要查找具有不同日期的重复记录(ID),但副本必须在之前/之后原始日期。基本上我试图找出是否在不同的日子使用相同的ID。
我能够找到重复但却无法获得日期部分,是否有更简单的方法来执行上述操作?
我一直在尝试以下方法但觉得我过于复杂化了:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.google.android.gms.maps.MapView
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.google.android.gms.maps.MapView>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_width="match_parent"
android:layout_height="150dp"
android:id="@+id/item_picker">
</android.support.v7.widget.RecyclerView>
</RelativeLayout>
</RelativeLayout>
我的数据类似于:
SELECT *
FROM table
WHERE ID IN (
SELECT ID
FROM Table
Where [DATE] < DATEADD(day, +1, [DATE]) and ID=ID
GROUP BY ID
HAVING COUNT(*) > 1 )
ORDER BY Name,[DATE], ID ASC
查询应该只选择名称AB和DE。
任何帮助都将不胜感激。
答案 0 :(得分:1)
SELECT NAME,
DATE,
ID
FROM TABLE1
WHERE ID IN (SELECT ID
FROM TABLE1
GROUP BY ID
HAVING COUNT(*) > 1)
<强>输出强>
NAME DATE ID
A 2018-03-30 6.26
B 2018-03-31 6.26
D 2018-04-02 11.88
E 2018-04-03 11.88
<强>演示强>
答案 1 :(得分:0)
您可以使用exists
:
select t.*
from t
where exists (select 1
from t t2
where t2.id = t.id and
t2.date = dateadd(day, -1, t1.date)
);
选择后面的副本。对于较早的版本,请使用1
代替-1
。
答案 2 :(得分:0)
您可以尝试以下方法
DECLARE @T TABLE
(
Nm VARCHAR(50),
Mydate DATE,
Id FLOAT
)
INSERT INTO @T
VALUES('A','3/30/2018',6.26),
('B','3/31/2018',6.26),
('C','4/1/2018',7.85),
('D','4/2/2018',11.88),
('E','4/3/2018',11.88),
('F','4/4/2018',9.48)
SELECT
*
FROM @T T
WHERE EXISTS
(
SELECT 1 FROM @T WHERE ID = T.Id GROUP BY Id HAVING COUNT(1)>1
)