草庐IT

mysql - 如果列不为 0,则 SQL 查询每个订单仅返回 1 条记录

coder 2023-10-19 原文

我已经使用这个网站好几个月了,它对我很有帮助。然而,我终于遇到了一个问题,我一直无法找到如何做的答案。

我的表中大约有 30 列,但我只对其中的 7 列感兴趣。我试图完成的是一个查询,它将返回每个订单的第一个和最后一个选择的日期/时间,但仅针对已完成的订单。

我的 table 看起来像这样:

    ordnum | adddte          |pckdte            |pckqty |appqty | srcloc | ctnnum
-----------+-----------------+------------------+-------+-------+--------+------
    ORD123 | 4/20/16 6:31 AM | Null             | 1     | 0     |  375   |  CTN1
    ORD123 | 4/20/16 6:31 AM | 4/20/16 11:39 AM | 2     | 2     |  335   |  NULL
    ORD123 | 4/20/16 6:31 AM | 4/20/16 11:37 AM | 1     | 1     |  336   |  CTN1

    ORD456 | 4/20/16 7:11 AM | 4/20/16 11:59 AM | 3     | 3     |  376   |  CTN2
    ORD456 | 4/20/16 7:11 AM | 4/20/16 11:47 AM | 1     | 1     |  345   |  CTN2
    ORD456 | 4/20/16 7:11 AM | 4/20/16 11:07 AM | 4     | 4     |  355   |  CTN2

请注意,判断订单是否完成的唯一方法是它的每个 appqty 的值都大于 0。它的 pckdte 可以为 null,并且订单仍在完成。

下面是我目前使用的代码,它确实给出了每个订单的开始和停止时间,但也包括尚未完成的订单。

SELECT 
      ordnum
      ,max(pckdte) AS "Last Pick"
      ,min(pckdte) AS "First Pick"
  FROM MyTable
  Where (adddte >= '2016-04-02 00:00:00' AND  pckdte <= '2016-04-20 23:59:59')

 and ctnnum like 'c%'
 and (srcloc like '2%' or srcloc like '3%' or srcloc like '4%' or srcloc like '5%' or srcloc like '1%')
group by ordnum
order by ordnum

代码给出了这些结果:

    ordnum  | Last Pick        |   First Pick
------------+------------------+----------------
    ORD123  | 4/20/16 11:39 AM | 4/20/16 11:37 AM
    ORD456  | 4/20/16 11:59 AM | 4/20/16 11:07 AM

但是我不想包括 ORD123,因为还有一个未完成的选择 (appqty = 0)。 adddte、srcloc 和 ctnnum 列用于将我部门的订单与其他人的订单分开,因为它们都存储在同一个表中,我的 where 语句中概述的参数是过滤掉我部门工作的唯一方法。

如果您对此问题有任何帮助,我们将不胜感激。如果我需要提供其他信息,请告诉我。

最佳答案

添加一行以确保 ordnum 的 appqty = 0 不存在

SELECT 
      ordnum
      ,max(pckdte) AS "Last Pick"
      ,min(pckdte) AS "First Pick"
  FROM MyTable
  Where (adddte >= '2016-04-02 00:00:00' AND  pckdte <= '2016-04-20 23:59:59')
 and ctnnum like 'c%'
 and (srcloc like '2%' or srcloc like '3%' or srcloc like '4%' or srcloc like '5%' or srcloc like '1%')
 -- line below added
 AND NOT EXISTS (SELECT 1 FROM MyTable T2 WHERE appqty = 0 AND T2.ordnum = MyTable.ordnum)      
group by ordnum
order by ordnum

关于mysql - 如果列不为 0,则 SQL 查询每个订单仅返回 1 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36751500/

有关mysql - 如果列不为 0,则 SQL 查询每个订单仅返回 1 条记录的更多相关文章

  1. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  2. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  3. ruby-on-rails - 如果为空或不验证数值,则使属性默认为 0 - 2

    我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val

  4. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  5. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  6. ruby - 如果指定键的值在数组中相同,如何合并哈希 - 2

    我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat

  7. ruby-on-rails - 在 Rails 和 ActiveRecord 中查询时忽略某些字段 - 2

    我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr

  8. ruby - 检查字符串是否包含散列中的任何键并返回它包含的键的值 - 2

    我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案

  9. ruby-on-rails - Rails 5 Active Record 记录无效错误 - 2

    我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa

  10. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

随机推荐