sql - 每日过滤交易
问题描述
我有两个带有主键(
Agent_ID
)的表。我想加入两个表,过滤器Agent_Type =3
和status =0
Transaction=5
每天获取最近三个月未进行任何交易的最后一个活跃年份的总交易价值。
我在下面尝试了代码,但我无法得到正确的答案
SELECT
AGENT_ID,
TO_CHAR(TO_DATE(TX_TIME,'DD-MON-YYYY')) AS DAYMONTHYEAR,
SUM(TX_VALUE) AS TOTALDAILYWISE,
count(*)as Transaction_count
FROM
(
SELECT
A.AGENT_ID,
TO_DATE(ATR.TX_TIME,'DD-MON-YYYY') AS TX_TIME,
MAX(TO_DATE(ATR.TX_TIME,'DD-MON-YYYY')) OVER(
PARTITION BY A.AGENT_ID
) AS LAST_TR_DATE,
ATR.TX_VALUE,
A.AGENT_TYPE_ID
FROM
TBLEZ_AGENT A
JOIN TBLEZ_TRANSACTION ATR ON ( A.AGENT_ID = ATR.SRC_AGENT_ID )
WHERE
A.AGENT_TYPE_ID = '3'
AND ATR.STATUS = '0'
AND ATR.TX_TYPE_ID = '5'
)
WHERE
LAST_TR_DATE < (SYSDATE - 90)
AND ( TX_TIME BETWEEN(LAST_TR_DATE - 365) AND LAST_TR_DATE )
GROUP BY
AGENT_ID,
TX_TIME;
请支持如何每天明智地进行交易
解决方案
试试这个查询:
SELECT
AGENT_ID,
TO_CHAR(TO_DATE(TX_TIME, 'DD-MON-YYYY')) AS DAYMONTHYEAR,
SUM(TX_VALUE) AS TOTALMONTHWISE,
COUNT(*) AS TRANSACTION_COUNT
FROM
(
SELECT
A.AGENT_ID,
TO_DATE(ATR.TX_TIME, 'DD-MON-YYYY') AS TX_TIME,
MAX(TO_DATE(ATR.TX_TIME, 'DD-MON-YYYY')) OVER(
PARTITION BY A.AGENT_ID
) AS LAST_TR_DATE,
ATR.TX_VALUE,
A.AGENT_TYPE_ID
FROM
TBLEZ_AGENT A
JOIN TBLEZ_TRANSACTION ATR ON ( A.AGENT_ID = ATR.SRC_AGENT_ID )
WHERE
A.AGENT_TYPE_ID = '3'
AND ATR.STATUS = '0'
AND ATR.TX_TYPE_ID = '5'
)
WHERE
LAST_TR_DATE < TRUNC(ADD_MONTHS( SYSDATE, - 3 ))
AND TX_TIME BETWEEN ADD_MONTHS(LAST_TR_DATE, -13) AND LAST_TR_DATE - 1
GROUP BY
AGENT_ID,
TX_TIME;
干杯!!
推荐阅读
- angular - Angular 在引入新模型后抛出“找不到源文件中的错误”。如何解决?
- python - Python:将类实例传递给外部函数
- python - 新列,每个元素作为列表 pandas
- multithreading - 用一个配方进行多线程构建?
- c# - C# WPF - 带有 DataTemplate 的 ListBox - 添加额外的“标题”行
- sql - VB6 的 SQL Server 和 ADO 数据类型 - 为存储过程中的 VARCHAR(MAX) OUTPUT 参数设置什么大小?
- list - elisp 如何将 lambda 应用于列表?
- javascript - Javascript 切换多个列类
- .net - 在 VB.Net 中铸造奇怪的东西
- c# - 为什么我的checkedListBox 在C# 中抛出NullReferenceException?