我正在尝试在表中查找重复的 DATETIME
行,
我的列有日期时间值,例如 2015-01-11 11:24:10.000
。
我必须在 2015-01-11 11:24
类型中获取重复项。剩下的,不重要。当我将 SELECT
与“convert(nvarchar(16),column,121)”一起使用时,我可以获得正确的值,但是当我将其放入代码中时,我必须使用“group by”语句, 所以
我的代码是:
SELECT ID,
RECEIPT_BARCODE,
convert(nvarchar(16),TRANS_DATE,121),
PTYPE
FROM TRANSACTION_HEADER
WHERE TRANS_DATE BETWEEN '11.01.2015' AND '12.01.2015'
GROUP BY ID,RECEIPT_BARCODE,convert(nvarchar(16),TRANS_DATE,121),PTYPE
HAVING COUNT(convert(nvarchar(16),TRANS_DATE,121)) > 1
由于 SQL 强制我在 GROUP BY
语句中使用“convert(nvarchar(16),TRANS_DATE,121)”,所以我无法获取重复值。
有什么想法吗?
提前致谢。
最佳答案
如果您想要复制实际的行,请改用窗口函数:
SELECT th.*, convert(nvarchar(16),TRANS_DATE,121)
FROM (SELECT th.*, COUNT(*) OVER (PARTITION BY convert(nvarchar(16),TRANS_DATE,121)) as cnt
FROM TRANSACTION_HEADER th
WHERE TRANS_DATE BETWEEN '11.01.2015' AND '12.01.2015'
) th
WHERE cnt > 1;
关于sql - 如何在 SQL Server 中获取 datetime 重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27903047/