小编Nik*_*vić的帖子

每个组的SQL SELECT TOP 1

我已经查看了其他问题并且无法找到我正在寻找的东西我有一个SQL数据库,其中有一个名为InventoryAllocations的表.在表格中,我有多个DocumentID条目,并希望检索每个唯一DocumentID的最后一个条目.我可以通过执行来检索一个

SELECT  top(1) [UID]
      ,[RecordStatusID]
      ,[CreatedDate]
      ,[CreatedTime]
      ,[CreatedByID]
      ,[OperationType]
      ,[InventoryLocationID]
      ,[DocumentTypeID]
      ,[DocumentID]
      ,[SOJPersonnelID]
      ,[InventorySerialisedItemID]
      ,[TransactionQty]
      ,[TransactionInventoryStatusID]
      ,[Completed]
      ,[CreatedByType]
      ,[RecordTimeStamp]
  FROM [CPData].[dbo].[InventoryAllocations]
  order by DocumentID desc
Run Code Online (Sandbox Code Playgroud)

但我想让它带回一个包含所有唯一DocumentID的列表.我希望你能提供帮助.非常感谢Hannah x

sql sql-server greatest-n-per-group

8
推荐指数
2
解决办法
2万
查看次数

如何编写SQL查询以识别特定字段中的重复值?

这是我正在使用的表格:

桌子

我想仅识别具有不同参数的重复扣减ID的ReviewID.

例如,在上图中,ReviewID 114具有两个不同的参数ID,但两个记录具有相同的扣除ID.

就我的目的而言,此记录(ReviewID 114)有错误.对于单个ReviewID,不应存在两个或多个具有相同扣减ID的唯一参数ID.

我想写一个查询来识别这些类型的记录,但我的SQL技能还没有.救命?

谢谢!

更新1:我正在使用TSQL(SQL Server 2008),如果这有助于
更新2:我正在寻找的输出将与上面的图像相同,减去任何与我所描述的标准不匹配的记录.

干杯!

sql t-sql sql-server sql-server-2008

6
推荐指数
2
解决办法
3万
查看次数

使用postgres排名功能限制n个顶级结果

我正在查询一个应付帐款表,其中包含ap文档列表,其中每个文档都包含我感兴趣的(以及其他字段)运行聚合查询的文件:

vendor_id,金额和日期.

我想在这个表上构建查询到我将获得的位置,按年份排序,前10名供应商按总数(金额总和)排序.

有人会告诉我如何使用排名功能.

sql postgresql greatest-n-per-group window-functions

6
推荐指数
1
解决办法
5433
查看次数

在Where子句中使用存储过程的结果

我在MS SQL 2008 R2中有一个存储过程(SP)我正在构建,它需要一个用户列表来缩小返回的数据.

我正在使用的系统有一个GetUsers SP,它返回一个用户列表,然后我需要使用它来限制从我自己工作的SP返回的结果.

我看过TABLE变量,但不确定这是否是我需要的.

我如何将一个SP的结果整合到另一个SP的where子句中?

sql sql-server sql-server-2008-r2

4
推荐指数
1
解决办法
6283
查看次数

SQL查找只有2列值的整行

我正试图

select columns Age, Height, House_number, Street
from my_table
where count(combination of House_number, Street)
occurs more than once.
Run Code Online (Sandbox Code Playgroud)

我的桌子看起来像这样

Age, Height, House_number, Street
15   178     6             Mc Gill Crst 
85   166     6             Mc Gill Crst
85   166     195           Mc Gill Crst
18   151     99            Moon Street 
52   189     14a           Grimm Lane
Run Code Online (Sandbox Code Playgroud)

我期望的结果看起来像这样

Age, Height, House_number, Street
15   178     6             Mc Gill Crst 
85   166     6             Mc Gill Crst
Run Code Online (Sandbox Code Playgroud)

卡住!

sql oracle group-by filter

3
推荐指数
1
解决办法
856
查看次数

SubSelect和Join的T-SQL语句 - 不明确的列名错误

我花了几个小时研究一个非常简单的T-SQL语句的答案.
情况就是这样.我想通过帮助台数据库进行报告.我有一个表(calllog),其中包含有关故障单的基本非重复信息和另一个事务表(Asgnmnt),其中包含对不同人员的各种分配以解决问题.我只是想确定Asgnmnt表中的最后一个分配,将它与呼叫日志文件链接,并使用外部选择中的数据来进行更多的数据报告.Asgnmnt表包含一个字段调用HEATSeq.给定CallID的最高HEATSeq将是最后一次分配.这是我的T-SQL语句和错误.

SELECT
Callid,
Priority,
RecvdDate,
RecvdTime,
ClosedDate,
ClosedTime,
CustID,
CallType,
CallDesc,
HeatSEQ#
FROM
      (Select 
      a.Callid, 
      a.Priority,
      a.RecvdDate,
      a.RecvdTime,
      a.ClosedDate,
      a.ClosedTime,
      a.CustID,
      a.CallType,
      a.CallDesc,
      (select TOP 1 HEATSeq from Asgnmnt f
      WHERE  a.CallID = f.CallID
      ORDER BY HEATSeq desc) as HeatSeq#
      FROM dbo.CallLog a 
      where a.CallID = '00520308') as z
LEFT OUTER JOIN dbo.Asgnmnt c on z.Callid=c.CallID and z.HeatSeq# = c.HEATSeq
Run Code Online (Sandbox Code Playgroud)

这是[错误]

Msg 209, Level 16, State 1, Line 2
Ambiguous column name 'Callid'.
Msg 209, Level 16, State 1, …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server calculated-columns ambiguous

3
推荐指数
1
解决办法
1640
查看次数

使用SQL查询生成时间表的所有可能组合

我有一个尴尬的SQL拼图,它击败了我.

我正在尝试生成学生单元的可能配置列表,以便我可以将他们的课程选择纳入时间表.学生可能的资格和学习列表如下:

Biology A
Biology C 
Biology D 
Biology E 

Chemistry B 
Chemistry C 
Chemistry D 
Chemistry E 
Chemistry F 

Computing D
Computing F 

Tutorial A 
Tutorial B 
Tutorial E 
Run Code Online (Sandbox Code Playgroud)

可以为学生提供可能的积木解决方案

Biology D
Chemistry C 
Computing F 
Tutorial E 
Run Code Online (Sandbox Code Playgroud)

如何查询上述数据集,为学生生成课程和块的所有可能组合?然后,我可以削减列表,删除那些冲突并选择一个有效的列表.我估计在这种情况下总共会有大约120种组合.

我可以想象它会是某种交叉连接.我已经尝试了使用窗口函数和交叉应用等各种解决方案,但它们都有一些缺陷.他们都往往被绊倒,因为每个学生都有不同数量的课程,每门课程都有不同数量的课程.

欢呼为您提供任何帮助!如果有必要,我可以粘贴在我的查询的粗糙混乱中!

亚历克斯

sql sql-server sql-server-2012

3
推荐指数
1
解决办法
3859
查看次数

从每个月获取最后记录

不幸的是,SQL并不是很容易找到我.我有两张桌子,一张Loan桌子和一张LoanPayments桌子.

LoanPayments表:

ID(主键),LoanID(与贷款表上的ID匹配),PaymentDate,Amount等.

我需要一个sql语句,它可以给我每月输入的最后一笔付款(如果有的话).我目前的陈述并没有给我结果.还有一个问题是,有时候那个月的最大日期会有一个平局,所以我也需要能够处理它(我的想法是在平局的情况下选择最大的ID).

这是我到目前为止(我知道这是错的,但我不知道为什么.):

SELECT lp.ID, lp.LoanID, lp.PaymentDate 
FROM LoanPayments lp 
WHERE lp.PaymentDate in (
                          SELECT DISTINCT MAX(PaymentDate) as PaymentDate 
                          FROM LoanPayments 
                          WHERE IsDeleted = 0
                          AND ReturnDate is null 
                          GROUP BY YEAR(PaymentDate), Month(PaymentDate)
                        ) 
AND CAST(PaymentDate as date) >= CAST(DATEADD(mm, -24, GETDATE()) as date)
Run Code Online (Sandbox Code Playgroud)

最后一部分只是过滤它,所以我只收到过去24个月的付款.感谢您的帮助,并花时间帮助我解决这个问题.

sql t-sql sql-server-2008 greatest-n-per-group

0
推荐指数
1
解决办法
7199
查看次数