【发布时间】:2016-03-08 17:45:33
【问题描述】:
我想做什么:
如果表OITM(OITM.AssetSerNo)中某个序列号的出现总数大于RDN1(RDN1.SerialNum)中相同序列号的出现总数,那么我想从OITM 记录中返回一些字段,其中资产编号OITM.ItemCode (PKey) 最大。
我的代码如下
select
oitm.itemcode as 'Asset No',
oitm.itemname as 'Asset Description',
oitm.assetSerNo as 'Serial No'
from oitm
inner join rdn1 on oitm.assetserno = rdn1.serialnum
WHERE
OITM.itemtype = 'F'
and OITM.asststatus = 'A'
HAVING count(oitm.assetserno)>count(rdn1.serialnum)
很遗憾,我收到错误消息,因为我的大多数项目既不在 group by 也不在聚合函数中。我什至不确定HAVING 子句是解决问题的最佳方法(事实上,我很确定它不是)。
编辑:样本数据(我猜?)
OIT
ItemCode ItemName AssetSerNo ItemType AsstStatus 123 对象 1 QW F I 234 对象 2 ER F A 345 对象 3 RT F I 456 对象 4 TY F A 567 对象 1 QW F I 第678章 对象5 789 对象 3 RT F A 890 对象 1 QW F A 901 对象 2 UI F A
这是一个物料主清单数据记录。 A = 有效,I = 无效。
RDN1
DocID 对象名称 序列号 1 个对象 1 个 QW 2 对象 3 RT 3 对象 1 QW 4 对象 5 YU 5 对象 4 TY 6 对象 3 RT
这是一个退货记录列表,用于租用物品何时返回仓库。
预期输出:
ItemCode ItemName AssetSerNo 789 对象 3 RT 456 对象 4 TY
我需要一份已创建退货但尚未停用的所有商品的列表。我不能只在 RDN1 上进行内部联接,因为我可能有返回的项目,项目记录更改为 I,但随后它被送回并创建了一个新的项目记录。
【问题讨论】:
-
发布样本数据和预期输出。
-
这就是问题所在。我没有任何样本数据。我基本上在这里工作是盲目的。不过,我会尝试模拟一些。
标签: sql sql-server