一个字段中的两个条件以获得一个结果
Posted
技术标签:
【中文标题】一个字段中的两个条件以获得一个结果【英文标题】:Two criteria in a field to get one result 【发布时间】:2013-04-13 03:02:32 【问题描述】:我想在与列相同的字段上获得两个条件的结果。数据库有两个不同的货币记录,一个 USD
和另一个 TRY
在表的同一字段中。所以,当我们得到对应于美元的 TRY 结果时,我想得到一个结果,即一一找到两种货币行并将 TRY 汇率除以美元。
我想在此代码中添加我试图在此处获取的脚本:
SELECT e.Gk_2, f.ad, sum(g.sf_miktar) as Qty
from Stok00 e
LEFT OUTER JOIN Gecoust f on e.Gk_2 = f.kod
left outer join stok29t g on e.kod = g.kod
where e.kod like 'SAC SIL%' and f.Evrakno = 'STKGK2'
group by e.GK_2, f.ad
示例:
(Select sum(stock29.amount) from stock29 where stock29.rate = 'USD')
(Select sum(stock29.amount / 1.8) from stock29 where stock29.rate = 'TRY')
【问题讨论】:
向我们展示一些表格数据和预期的输出。很难理解你到底在追求什么。 我相信你应该可以CASE
子句。 (CASE WHEN rate='USD' THEN amount WHEN rate = 'TRY' THEN amount/1.8 END)
您是否要在查询中添加一个单个字段,该字段将合计原始美元和从TRY转换使用与您现在相同的 GROUP BY
子句?
@PM77-1 感谢您的帮助。
@VaibhavDesai 感谢您的建议。
【参考方案1】:
如果我对您的理解正确,那么您的查询应该如下所示(我只是在您的查询中添加一个字段,假设它有效):
SELECT e.Gk_2, f.ad, sum(g.sf_miktar) as Qty,
SUM(CASE WHEN stocks29.rate = 'USD' THEN stocks29.amount
WHEN stocks29.rate = 'TRY' THEN stocks29.amount / 1.8 END) As Amount
from Stok00 e
LEFT OUTER JOIN Gecoust f on e.Gk_2 = f.kod
left outer join stok29t g on e.kod = g.kod
where e.kod like 'SAC SIL%' and f.Evrakno = 'STKGK2'
group by e.GK_2, f.ad
我还假设stocks29.rate
和stocks29.amount
都不会是NULL
。如果不是这种情况,则应将它们适当地包装在 ISNULL()
函数中。
【讨论】:
以上是关于一个字段中的两个条件以获得一个结果的主要内容,如果未能解决你的问题,请参考以下文章