- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
过去几天我一直被这个 MySQL 查询难住了,在我把我的电脑扔出窗外之前寻求一些专家的帮助,哈哈。
我有一个包含发票的表格;发票编号列名称是 Trans_ref$$(主键)。
每张发票都链接到一个作业,列名是 OPSREF$$_ORIGINAL(外键)。
两列都在同一个表中。
一个工作可以有多个发票。
现在的问题是我正在尝试创建一个查询,该查询将在工作组中按顺序 (Trans_ref$$) 识别第一张发票,如果第一张发票具有日期范围,则输出该工作 (OPSREF$$ _原来的)。发票编号是连续且唯一的编号。
我曾尝试使用 case/min group by 语句来识别数据范围内作业组中的第一张发票,但是此查询并未隔离日期范围内的第一张发票,而只是输出第一张或第二张或工作组中与日期范围匹配的第 3 个发票……我希望这是有道理的。
我已经包含了表格的屏幕截图和所需的输出,如果有人你好过去一天我一直被这个查询难倒,在我把我的电脑扔出窗外之前寻求一些专家的帮助,大声笑。
我有一个包含发票的表格;发票编号列名称是 Trans_ref$$(主键)。
每张发票都链接到一个作业,列名是 OPSREF$$_ORIGINAL(外键)。
两列都在同一个表中。
一个工作可以有多个发票。
现在的问题是我正在尝试创建一个查询来识别作业组中的第一张发票 (Trans_ref$$),如果该第一张发票具有日期范围,则输出作业 (OPSREF$$_ORIGINAL) .顺序/唯一编号中的发票编号。
我曾尝试使用 case/min group by 语句来识别数据范围内作业组中的第一张发票,但是此查询并未隔离日期范围内的第一张发票,而只是输出第一张或第二张或工作组中与日期范围匹配的第 3 个发票……我希望这是有道理的。
这是我用过的代码
SET @START_DATE := "2014-08-27";
SET @END_DATE:= "2014-09-02";
select
count(TRANS_REF$$),
Case
when min(TRANS_REF$$) and INVOICE_DATE_D8>=@START_DATE and INVOICE_DATE_D8<=@END_DATE
then OPSREF$$_ORIGINAL
end as OPSREF$$_ORIGINAL
from INVOICE_HEADER_UNS
where
TRANSACTION_STATUS = 9
and Tmode$$="06"
group by OPSREF$$_ORIGINAL
所以要分阶段分解这个过程......
<强>1。获取 INVOICE_HEADER_UNS 表中的每个 OPSREF$$_ORIGINAL 组
Date Range - Start 27/08/2014 - End 02/09/2014
TABLE - INVOICE_HEADER_UNS
TRANS_REF$$ INVOICE_DATE_D8 OPSREF$$_ORIGINAL
---------------------------------------------
| 1 | 26/08/2014 | ABC |
| 2 | 02/08/2014 | ABC |
---------------------------------------------
| 3 | 28/08/2014 | DDD |
| 4 | 09/09/2014 | DDD |
---------------------------------------------
| 5 | 01/01/2013 | JJJ |
| 6 | 21/12/2013 | JJJ |
---------------------------------------------
| 7 | 01/09/2014 | LLL |
---------------------------------------------
<强>2。在每个 OPSREF$$_ORIGINAL 组中,查看 TRANS_REF$$ 序列并找到该 OPSREF$$_ORIGINAL 组中的第一个 TRANS_REF$$。
Date Range - Start 27/08/2014 - End 02/09/2014
TABLE - INVOICE_HEADER_UNS
TRANS_REF$$ INVOICE_DATE_D8 OPSREF$$_ORIGINAL Is First inv?
--------------------------------------------------------
| 1 | 26/08/2014 | ABC | yes
| 2 | 02/08/2014 | ABC | no
--------------------------------------------------------
| 3 | 28/08/2014 | DDD | yes
| 4 | 09/09/2014 | DDD | no
---------------------------------------------------------
| 5 | 01/01/2013 | JJJ | yes
| 6 | 21/12/2013 | JJJ | no
---------------------------------------------------------
| 7 | 01/09/2014 | LLL | yes
---------------------------------------------------------
<强>3。查看组的有序序列中的第一个发票并检查该行的 INVOICE_DATE_D8 并查看它是否在日期范围内 (27/08/2014 - 02/09/2014)
Date Range - Start 27/08/2014 - End 02/09/2014
TABLE - INVOICE_HEADER_UNS
TRANS_REF$$ INVOICE_DATE_D8 OPSREF$$_ORIGINAL Is First inv? In date range?
--------------------------------------------------------
| 1 | 26/08/2014 | ABC | yes no
--------------------------------------------------------
| 3 | 28/08/2014 | DDD | yes yes
---------------------------------------------------------
| 5 | 01/01/2013 | JJJ | yes no
---------------------------------------------------------
| 7 | 01/09/2014 | LLL | yes yes
<强>4。每行是否符合标准(即第一张发票和日期 - 是 + 是)?如果正确,则为该行输出不同的 OPSREF$$_ORIGINAL
这是上面示例的所需输出
Date Range - Start 27/08/2014 - End 02/09/2014
TABLE - INVOICE_HEADER_UNS
OPSREF$$_ORIGINAL Is First inv? In date range?
------------------------
| DDD | yes yes
------------------------
| LLL | yes yes
------------------------
基于此,您能建议我如何做到这一点吗?谢谢
这是表定义;
表名 - INVOICE_HEADER_UNS
**TRANS_REF$$** char(7) - Primary key
INVOICE_DATE_D8 datatime
OPSREF$$_ORIGINAL char(11)
16/09/2014 - 这是似乎使用 DRapp 语法返回正确结果的查询,但是需要以某种方式优化查询,因为当我将其作为子查询绑定(bind)到更大的查询时,它会导致我的 MYSQL工作台崩溃。在对查询进行解释后,它似乎正在通过 28,309 行进行索引。如何在不影响结果的情况下优化此查询?
我已经尝试将以下内容添加到 where 子句中,但是它会向整个查询输出添加更多记录,但会索引 979 行/
set @START_DATE := '2014-08-27';
set @END_DATE := '2014-09-02';
SELECT
if (min(ihu.INVOICE_DATE_D8)>= @START_DATE and min(ihu.INVOICE_DATE_D8)<= @END_DATE ihu.opsref$$_original, null) as firstinvoiceindaterange
from
INVOICE_HEADER_UNS ihu
join CONSIGNMENT_ALL_HEADER_UNS on ihu.OUR_REF = CONSIGNMENT_ALL_HEADER_UNS.OPSREF$$
where ihu.TRANSACTION_STATUS = 9 and ihu.Tmode$$="06"
AND CONSIGNMENT_ALL_HEADER_UNS.CONS_TYPE$$ <>'7'
AND CONSIGNMENT_ALL_HEADER_UNS.CONS_TYPE$$ in ('3' , '5', '9')
#and ihu.INVOICE_DATE_D8>= @START_DATE and ihu.INVOICE_DATE_D8<= @END_DATE
group by
ihu.opsref$$_original
最佳答案
我认为这应该对您有所帮助,您可以根据需要进行调整。
SELECT
ihu.opsref$$_original,
MIN( ihu.TRANS_REF$$ ) MinRefForEntireJob,
MIN( ihu.INVOICE_DATE_D8 ) MinDateForEntireJob,
MIN( IF( ihu.INVOICE_DATE_D8 >= @START_DATE
AND ihu.INVOICE_DATE_D8 <= @END_DATE, ihu.TRANS_REF$$, null )) as MinRefWithinDateRange,
MIN( IF( ihu.INVOICE_DATE_D8 >= @START_DATE
AND ihu.INVOICE_DATE_D8 <= @END_DATE, ihu.INVOICE_DATE_D8, null )) as MinDateWithinDateRange
from
INVOICE_HEADER_UNS ihu,
( select @START_DATE := '2014-08-27',
@END_DATE := '2014-09-02' ) sqlvars
group by
ihu.opsref$$_original
一旦你看到这些结果,那么你应该能够添加一个像这样的 HAVING 子句
HAVING
MinDateWithinDateRange IS NOT NULL
关于mysql - Group by Mysql 查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25804850/
我想编写一个 linq 表达式,该表达式将返回不包含特定值的 ID。例如,我想返回所有不具有 Value = 30 的不同 ID。 ID, Value 1, 10 1, 20 1, 30 2,
我正在尝试使用 Regexp 匹配 Nmap 命令的输出。可以有两种不同的格式。 第一种格式(当 nmap 可以找到主机名时) Nmap scan report for 2u4n32t-n4 (192
我正在 Visual Studio 2012 上使用 C# 开发一个软件。我使用 MySQL Connector 6.9.1 进行 MySQL 连接。我的软件在我的操作系统(Win8 x64)上运行顺
在 Django 中(使用 django.contrib.auth 时)我可以添加一个 Group到另一个 Group ?即一个Group成为另一个成员(member) Group ? 如果是这样,我
我试图通过使用动态组参数对数据进行分组来循环。 我们可以在循环的 WHERE 条件上使用动态查询,但我不知道是否可以在组条件中使用动态字符串。 以下是用户决定按哪个字段分组,然后根据决定放置其他逻辑的
我有这样的字符串 s = 'MR1|L2-S1x' 模式总是相同的:一个或两个字符,在 [|.+:x-] 中可选地后跟一个数字和一个分隔符。此模式可以重复 6 次。 所以匹配模式很明确。 p = r'
我有一个带有时间戳字段“bar”的表“foo”。如何仅获取查询的最旧时间戳,例如: SELECT foo.bar from foo?我尝试执行以下操作: SELECT MIN(foo.bar) fro
在我的 Django 项目中,我有一个 user_manage 应用程序。 我在 user_manage 应用的 model.py 中创建了一个名为 UserManage 的模型: from djan
所以我有这样的输入: 还有一个模板指令,例如: 看来我只获得了 foo 和 bar 的组。 (为什么?我预计我可能会得到第三组 current-group-key() = '')。
我正在尝试扩展 django.contrib.auth 并遇到将用户添加到组中的情况,这可以通过两种方式完成。我只是想知道为什么会这样,以及其中一种相对于另一种的优势是什么。 最佳答案 他们做完全相同
我使用的是旧的 PHP 脚本,并且此查询有错误。由于我没有使用 mysql 的经验,因此无法修复它。 "SELECT COUNT(p.postid) AS pid, p.*, t.* FROM ".T
我有几行 Objective-C 代码,例如: ABAddressBookRef addressBook; CFErrorRef error = NULL; addressBook = ABAddre
我正在使用 MariaDB IMDB 电影数据集,我试图解决以下问题。电影表包含 id、名称、排名和年份列 A decade is a sequence of 10 consecutive years
让我从数据开始,以便更好地描述我的需求。我有一个名为 SUPERMARKET 的表,其中包含以下字段: Field 1: StoreID Field 2: ProductCategory Field
你好我有这个查询: SELECT DISTINCT a.id, a.runcd, (SELECT SUM(b.CALVAL) FROM GRS b WHERE b.PCode=11000 AND a.
我想在 xquery 中使用 Group By。有人可以告诉我如何在 Marklogic 中使用 Group By 吗? 最佳答案 或者,您可以使用 xdmp:xslt-invoke 调用 XSLT或
因此,当通过 from sequelize 请求组时,如下所示: return models.WorkingCalendar .findAll({
我希望我解释正确。 我有 2 个表,有 第一个表(table1) +------------+------+-------+-------+ | Date | Item | Block |
我的表 MYTABLE 有 2 列:A 和 B 我有以下代码片段: SELECT MYTABLE.A FROM MYTABLE HAVING SUM(MYTABLE.B) > 100
我有一个简单的行分组查询,需要 0.0045 秒。 300.000 行 从表 GROUP BY cid 中选择 cid 当我添加 MAX() 进行查询时,需要 0.65 秒才能返回。 从表 GROUP
我是一名优秀的程序员,十分优秀!