【问题标题】:find the user entered value or sum the row values查找用户输入的值或对行值求和
【发布时间】:2020-02-20 08:39:16
【问题描述】:

我需要获取在价格列中具有特定值的发票号,如果不是所有在价格列中具有该特定值的总和值的发票号..如何为此编写 sql 查询

我已经附上了我的表格的数据 数据

invoice     price
v1        	1000      
v2        	200       
v3        	35        
v4        	500       
v5        	50        
v6        	300       
v7	        400

预期输出:
if(input 500) found =>then found v4

else((v2,v6)的总和

【问题讨论】:

  • 这里的大多数人都希望样本表数据和预期结果为格式化文本,而不是图像。
  • 我不明白“如果不是所有发票编号都在价格列中具有该特定值的总和值” - 请您最好用示例数据和预期输出澄清一下。
  • 添加请检查

标签: mysql sql logic


【解决方案1】:

您可以找到满足您条件的 1 或 2 张发票的所有组合:

select d1.invoice, d1.price,
       (case when d2.invoice <> d1.invoice then d2.invoice end) as invoice2,
       (case when d2.invoice <> d1.invoice then d2.price end) as price2
from data d1 left join
     data d2
     on d1.invoice <= d2.invoice
where (d1.price = 500 and d2.invoice = d1.invoice) or
      (d1.price + d2.price) = 500

Here 是一个 dbfiddle。

如果您想要更大的组合,请添加更多连接。

【讨论】:

  • D1 和 D2 数据相同,因此上述条件下的左连接将返回所有数据。
  • 我很困惑,你能解释一下吗提前谢谢
  • @ABCD 。 . .我调整了查询​​并添加了一个 db fiddle。这是获取单独的发票或对添加到您想要的总价格。
  • 如果我需要100个组合,我需要添加50个连接吗?????有什么捷径吗
  • (1) 我认为这回答了您在这里提出的问题。我什至包含了一个 dbfiddle 来演示这一点。 (2) 你可以再问一个问题。 (3) 你真的不能为此目的使用 SQL。它需要非常昂贵的处理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 2011-11-09
  • 2016-07-24
  • 2016-03-03
  • 2014-11-29
  • 1970-01-01
  • 2018-05-13
相关资源
最近更新 更多