Sql 将ORACLE代码段组合到条件语句中
我们公司有一个忠诚卡数据库。卡系统由全国两种类型的终端提供服务。问题是,两个端子对当前点平衡的计数不同 我想做一个查询,首先按日期查找单个用户交易列表的最后一行,然后检查终端的ID,并根据ID返回同一行的卡余额 两种类型的端子可以表示为:Sql 将ORACLE代码段组合到条件语句中,sql,oracle,conditional,Sql,Oracle,Conditional,我们公司有一个忠诚卡数据库。卡系统由全国两种类型的终端提供服务。问题是,两个端子对当前点平衡的计数不同 我想做一个查询,首先按日期查找单个用户交易列表的最后一行,然后检查终端的ID,并根据ID返回同一行的卡余额 两种类型的端子可以表示为: terminal_id LIKE 'AGHUPR9%' terminal_id LIKE 'AGHUPR7%' AGHUPR9%的用户只需从名为card\u balance的列中获取余额。 AGHUPR7%的人需要对卡余额和总积分列进行求和才能得到当前余额
terminal_id LIKE 'AGHUPR9%'
terminal_id LIKE 'AGHUPR7%'
AGHUPR9%的用户只需从名为card\u balance的列中获取余额。
AGHUPR7%的人需要对卡余额和总积分列进行求和才能得到当前余额
我编写了查询的主要部分,但我对ORACLE不够熟悉,因此不知道如何在语法上组合它们。这就是我要感谢你的帮助。下面是我想到的,我不确定需要的代码
SELECT *
FROM
(SELECT terminal_id
FROM ag_tranzakcio
WHERE cardnumber = '9348722610095185'
ORDER BY tran_date DESC)
WHERE ROWNUM = 1
如果上述语句返回以AGHUPR9开头的终端id,执行此操作:
SELECT *
FROM
(SELECT card_balance
FROM ag_tranzakcio
WHERE cardnumber = '9348722610095185'
ORDER BY tran_date DESC)
WHERE ROWNUM = 1
SELECT *
FROM
(SELECT card_balance+total_points
FROM ag_tranzakcio
WHERE cardnumber = '9348722610095185'
ORDER BY tran_date DESC)
WHERE ROWNUM = 1
如果第一条语句返回一个以AGHUPR7开头的终端id,则改为执行此操作:
SELECT *
FROM
(SELECT card_balance
FROM ag_tranzakcio
WHERE cardnumber = '9348722610095185'
ORDER BY tran_date DESC)
WHERE ROWNUM = 1
SELECT *
FROM
(SELECT card_balance+total_points
FROM ag_tranzakcio
WHERE cardnumber = '9348722610095185'
ORDER BY tran_date DESC)
WHERE ROWNUM = 1
如何将它们组合到工作查询中?我尝试使用案例,但收效甚微
提前谢谢。只需使用案例陈述即可
SELECT *
FROM
(SELECT
CASE
WHEN terminal_id LIKE 'AGHUPR9%' THEN card_balance
ELSE card_balance+total_points
END AS card_balance
FROM ag_tranzakcio
WHERE cardnumber = '9348722610095185'
ORDER BY tran_date DESC)
WHERE ROWNUM = 1
当
终端id
以“AGHUPR9”开头时,将使用卡余额
,否则将使用卡余额+总分
,在任何情况下都将在名为“卡余额”的列中返回答案。。这看起来很完美,正是我一直在寻找的。非常感谢你,马特。