一个字段中的两个条件以获得一个结果

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.ratestocks29.amount 都不会是NULL。如果不是这种情况,则应将它们适当地包装在 ISNULL() 函数中。

【讨论】:

以上是关于一个字段中的两个条件以获得一个结果的主要内容,如果未能解决你的问题,请参考以下文章

如何根据核心数据中的一个字段获得不同的结果

如何将 IN 运算符与 LIKE 条件相结合(或获得可比较结果的最佳方法)

连接两个单维列表以获得一个多维列表

Django 结合两个没有 Q 的查询

使用两个不同的外键连接两个表以获得相同的字段

如何在同一个表上组合两个查询以在 MySQL 中获得单个结果集