希望我不会把事情搞复杂。我编写了以下SQL,返回用户他们最近的事务满足一个条件(TRANS_TYPE NOT IN(4,6,21,23)或DESTORIT_OPTION&64<>64)。
SELECT
TERMINAL_ID,REGISTER_ID,[USER_ID],sub.CREATE_DATE,sub.TRANS_TYPE_ID,BUS_DATE_ID
FROM (
SELECT
T.TERMINAL_ID
,US.REGISTER_ID
,U.[USER_ID]
,T.CREATE_DATE
,T.TRANS_TYPE_ID
,T.BUS_DATE_ID
,T.TRANS_CONFIG_ID
,TT.TRANS_TYPE
, row_number()
over (partition by U.[USER_ID]
order by T.CREATE_DATE desc) rn
From [RCMDYNAMIC].[dbo].[Transaction] T
INNER JOIN [RCMDYNAMIC].[dbo].[UserSession] US ON T.USER_SESSION_ID = US.USER_SESSION_ID
INNER JOIN [RCMSTATIC].[dbo].[User] U ON U.[USER_ID] = US.[USER_ID]
INNER JOIN [RCMSTATIC].[dbo].[TransactionType] TT ON T.TRANS_TYPE_ID = TT.TRANS_TYPE_ID
INNER JOIN [RCMSTATIC].[dbo].[Register] R ON US.REGISTER_ID = R.REGISTER_ID
) sub
LEFT JOIN
[RCMSTATIC].[dbo].[DepositConfig] DC
ON sub.TRANS_CONFIG_ID = DC.DEPOSIT_ID
WHERE sub.rn = 1 AND (TRANS_TYPE NOT IN (4, 6, 21, 23) OR DEPOSIT_OPTION & 64 <> 64)
我通过使用
ROW_NUMBER()(分区按U.[USER_ID]顺序按T.CREATE_DATE desc)rn
前面代码中的sub查询将返回所有用户的所有事务,并按DESC顺序对其进行排序,外部SELECT将通过检查rank 1事务来显示满足条件的用户。
我想要的是像这样的东西
FOREACH user如果用户rank 1事务满足条件,则查找用户最近的TRANS_TYPE事务10
User_ID TRANS_TYPE DEPOSIT_OPTION Rank
1 4 7 1
1 10 7 2
2 22 64 1
2 23 4 2
2 10 126 3
2 4 7 4
3 10 3 1
4 6 64 1 -- doesn't meet the condition
4 10 7 2
WHERE sub.rn = 1 AND (TRANS_TYPE NOT IN (4, 6, 21, 23) OR DEPOSIT_OPTION & 64 <> 64)
User_ID TRANS_TYPE Rank
1 10 2
2 10 3
3 10 1
对不起,如果问题不是很清楚,我已经尽力了!
drop table if exists dbo.Deposits;
create table dbo.Deposits (
User_ID int
, Trans_Type int
, Deposit_Option int
, Rank int
);
insert into dbo.Deposits (User_ID, Trans_Type, Deposit_Option, Rank)
values (1, 4, 7, 1), (1, 10, 7, 2)
, (2, 22, 64, 1), (2, 23, 4, 2), (2, 10, 126, 3), (2, 4, 7, 4)
, (3, 10, 3, 1)
, (4, 6, 64, 1), (4, 10, 7, 2);
select
sub2.User_ID, sub2.Trans_Type, sub2.Rank
from dbo.Deposits sub
inner join dbo.Deposits sub2 on sub.User_ID = sub2.User_ID
and sub2.Trans_Type = 10
where sub.Rank = 1 AND (sub.Trans_Type NOT IN (4, 6, 21, 23) OR sub.Deposit_Option & 64 <> 64)
问题内容: 我有一个包含ID,WorkerID,IsActive标志(1或0)和LocalTime的表。每次工作人员处于活动状态或不活动状态时,都会使用WorkerID,1或0标志记录以及一个时间(LocalTime)创建一条记录。 我想插入一个新表中:从该表中,对于每个唯一的WorkerID,仅当该记录的IsActive标志为1时,才为该唯一的WorkerID选择具有最新LocalTime的记录
问题内容: 我有一个具有以下结构的MySQL表: drinks_log(id,users_id,brinkles_id,时间戳) 我正在尝试计算用户(ID为1)每天至少记录5次饮料(ID为1)的连续几天的最大连胜纪录。我很确定可以使用以下视图来完成此操作: 但是,每次运行此检查时都为不同的用户重复创建视图似乎效率很低。MySQL中是否有一种方法可以在单个查询中执行此计算,而无需创建视图或多次重复调
问题内容: 我想要一种改进我的sql代码的好方法,当条件满足时,我必须使用内部联接。我目前正在复制代码: 我想以这种方式做到这一点: 编辑: 解决方案(由于@Damien_The_Unbeliever): 问题答案: 这应该(大约)执行相同的操作: 当然,这还意味着必须编写对其中的列的任何其他引用,以期望此类列为。
我有一个网页(我是php初学者,只有1.5个月的书籍例子),允许用户输入一个gpa,然后搜索符合最低输入的学生。当单击search按钮时,它从php文件中调用一个函数来查询数据库。我的代码几乎正常工作。问题是它是返回所有的学生,我想返回只行符合最低gpa输入。尝试使用HAVING子句和其他子句,但仍然没有返回我想要的内容。谢谢! sql Fiddle链接:http://www.sqlfiddle.
问题内容: 我有一个jtable。(表格摘要)。其中一列是EXPIRY。我想用当前日期已经过期的客户端突出显示该行。 我已经掌握了逻辑,但是我无法使行变成红色或任何其他颜色。这是我的代码: 谁能帮我这个?因为它是我界面的主要亮点之一。提前致谢 !!:) 问题答案: 在以下链接中,您可以找到要执行的操作的示例:http : //www.roseindia.net/java/example/java/
我正在写一些代码,有些事情让我困惑。我有一个名为的数字数组。现在我想遍历这个列表,如果一个值高于60,例如,我想创建一个新的对象数组(集合),在那里我们存储高值,它的索引来自原始数组。所以以下面的代码为例 控制台。日志输出如下 这个输出是我所需要的,但是如何防止返回未定义的值呢?我考虑过使用数组。但这似乎不合适?我应该使用不同的数组方法吗?我不想使用for循环并推送到一个新数组,除非这是在不返回未