请原谅我的问题的标题-

我有桌子

TRXN (ID,ACCT_NUM,TRAN_MEMO,AMOUNT,DATE,LRN)

我想编写一个查询来拉取具有相同LRN但其他列中的至少一个具有不同值的记录。 可能吗?

#1楼 票数:1 已采纳

在我的回答中,我认为您具有唯一的ID值并将其排除。

创建的表:

CREATE TABLE #TRXN (ID INT IDENTITY(1, 1)
                    ,ACCT_NUM INT
                    ,TRAN_MEMO INT
                    ,AMOUNT INT
                    ,[DATE] DATE
                    ,LRN INT
)

插入样本数据

INSERT INTO #TRXN VALUES (1, 2, 2, '1 jan 2000', 2)
                        ,(2, 2, 2, '2 jan 2000', 2)
                        ,(1, 2, 2, '1 jan 2000', 2)
                        ,(1, 2, 2, '1 jan 2000', 3)

具有相同的LRN,但另一列中至少有一个具有不同的值

;WITH C AS(
    SELECT ROW_NUMBER() OVER (PARTITION BY ACCT_NUM, TRAN_MEMO, AMOUNT, [DATE], LRN ORDER BY ACCT_NUM, TRAN_MEMO, AMOUNT, [DATE], LRN) AS Rn
           ,ID, ACCT_NUM, TRAN_MEMO, AMOUNT, [DATE], LRN
    FROM #TRXN WHERE LRN IN(
    SELECT LRN FROM #TRXN GROUP BY LRN HAVING COUNT(ID) > 1)
)
SELECT ID, ACCT_NUM, TRAN_MEMO, AMOUNT, [DATE], LRN
FROM C WHERE Rn = 1

输出:

ID ACCT_NUM TRAN_MEMO AMOUNT DATE        LRN
---------------------------------------------
1  1        2         2      2000-01-01  2
2  2        2         2      2000-01-02  2

#2楼 票数:0

为什么简单地使用group by:

 SELECT COUNT(1) AS numberOfGroupedRows,ID,ACCT_NUM,TRAN_MEMO,AMOUNT,DATE,LRN
 FROM TRNX GROUP BY ID,ACCT_NUM,TRAN_MEMO,AMOUNT,DATE,LRN

因为按分组将所有相似的行分组为一行

  ask by Reeya Oberoi translate from so

未解决问题?本站智能推荐:

3回复

SQL查询按一列分组(可能重复),并按时间排序

我有一张用于生产Cookie的表格,其中为每个Cookie分配了一个盒号和一个从烤箱中出来的时间(一次从一个烤箱中出来的Cookie)。 用户退出烤箱后检查曲奇,并为每个曲奇分配一个盒号。 (箱号全天都在增加;每个箱仅一种cookie。)我想获得一份今天的箱号列表,按时间排序。 然而,在每
2回复

Sql Server组由多列唯一性组成,仅在一列上

我正在构建一个发送电子邮件的系统,我需要进入[User]表来检索要发送的电子邮件,以及将用于取消订阅目的的GUID(uniqueidentifier类型)。 它适用于电子商务解决方案,因为匿名用户和登录用户可以拥有相同的电子邮件地址,因此会创建需要在查询中区分的重复电子邮件条目。 我
4回复

比较SQL组中的列

我对SQL还是很陌生,因此如果这个问题很难理解,我深表歉意。 假设我有一个类似的表格: 我想执行一条选择语句,为我提供具有多个不同生日的人的名字。 因此,对于我的示例表,输出将是Mark,Joe和Jeff。 谢谢你的帮助。
5回复

SQL Server:如何根据时间间隔(例如2小时内)按日期时间列进行分组

我想根据时间间隔对数据进行分组,让我们说3小时组。 如何在数据的时间范围内对数据进行分组。 我的数据就像 例如,在上面的数据中,我想在一段时间内使用UserCode进程对数据进行分组,让我们说10-12。 喜欢 由于此代码总计数基于10-12之间的时间和UserCo
1回复

如果 SQL Server 中过去 3 个月中的任何一个值大于 3,则查询以显示数据

如果过去 3 个月中的任何一个月的值>=3,我想过滤该值。 查看我在输出中需要的突出显示的图像。 我试过的查询。 having count(ticket_no)>=3消除该月小于 3 的值。 请看图片
1回复

带有group by的SQL查询,用于多个日期范围

我需要制定一个t-sql查询,到目前为止我一直无法这样做。 我需要查询的表称为具有两列的操作,FK OperationTypeID和OperationDate。 查询需要返回一个结果,该结果包括在指定范围内的操作类型id的计数。 通过应用程序界面,用户可以指定多个operationty
4回复

如何使用分组依据语句

我试图使用group by语句,但是它给了我这个错误:-选择列表中的列无效,因为它既不包含在聚合函数中也不在GROUP BY子句中 但是我需要根据他们的Feeid对他们进行分组。 如果没有SUM(Amount)(仅表示Amount),并且按语句iam进行分组,则输出如下:
3回复

按热门按键名分组

可以说在系统中有一条记录,以下是一些: 如何删除记录? 从系统删除记录 用户想要删除产品 删除多个用户帐户 我想搜索人口最多的记录类型。 在上面的记录中,单词“ delete”很多。 我想写一个查询,将最受欢迎的记录分组。 我努力了: