sql - 将自定义值添加到 SELECT
问题描述
我有这个查询:
SELECT r.record_id,
r.part_id,
r.record_dt,
a.association_part_a,
a.association_part_b,
a.association_type,
a.association_id,
r.product_id
FROM dbo.synfact_association AS a
INNER JOIN dbo.synfact_record AS r
ON a.record_id = r.record_id
WHERE ( r.part_id IN (SELECT part_id
FROM dbo.synfact_record AS synfact_record_1
WHERE ( record_status = 1 )
AND ( record_type = 0 )) )
AND ( r.product_id IN ( 38, 39, 40, 41,
42, 43, 44, 45,
46, 37, 47, 48,
49, 50, 51, 52,
53, 54, 58, 59 ) )
AND ( r.record_id > 499 )
AND ( r.record_status = 1 )
我想使用第二个查询的 record_dt 作为第一个查询中的 record_dt 的替换。我想通过链接 part_id 上的值来做到这一点,因为它们都有它。第一个查询给出一个包含 part_id 的 record_id 列表,第二个查询为每个 record_id 获取最新的 record_dt。我的最终目标是从第二个查询中获取最新的 record_dt 以在第一个查询中替换。我可以在 part_id 上链接它们。
我需要用这个 SELECT 替换 r.record_dt:
SELECT DISTINCT RECORD_DT FROM synfact_record WHERE PROCESS_STEP_LIST_ID IN (21,22,23) ORDER BY RECORD_DT DESC
这是第一个查询所做的
RECORD_ID | PART_ID | 记录_DT | ASSOCIATION_PART_A | ASSOCIATION_PART_B | ASSOCIATION_TYPE | ASSOCIATION_ID | PRODUCT_ID |
---|---|---|---|---|---|---|---|
286660 | SYN12021020100018 | 2021-02-15 11:18:11.840 | SYN12021020100018 | 21-02-01-000003 | 唯一身份 | 452028 | 39 |
287146 | SYN12021020300773 | 2021-02-17 07:30:59.603 | SYN12021020300773 | 2102-00-005218 | 唯一身份 | 455735 | 38 |
287147 | SYN12021020300774 | 2021-02-17 07:31:04.780 | SYN12021020300774 | 2102-00-005219 | 唯一身份 | 455736 | 38 |
第二个查询返回:
记录_DT |
---|
2021-10-20 11:36:02.670 |
2021-10-20 11:35:29.263 |
2021-10-20 11:34:59.583 |
我想用第二个 SELECT 替换 record_dt。
我知道我必须将它附加到第一个查询中,我只是不知道如何......
哪种方法最好做到这一点?
解决方案
如果您可以将 LIMIT 1 限制为您的 select 子句,则可以使用如下查询:
SELECT r.record_id,
r.part_id,
CASE
WHEN r.PROCESS_STEP_LIST_ID IN (21 , 22, 23) THEN
(SELECT DISTINCT RECORD_DT FROM synfact_record WHERE PROCESS_STEP_LIST_ID IN (21,22,23) ORDER BY RECORD_DT DESC LIMIT 1)
ELSE r.RECORD_DT
END as record_dt,
a.association_part_a,
a.association_part_b,
a.association_type,
a.association_id,
r.product_id
FROM dbo.synfact_association AS a
INNER JOIN dbo.synfact_record AS r
ON a.record_id = r.record_id
推荐阅读
- python - 试图并行运行一个函数,但对多处理感到困惑
- monaco-editor - 是否可以从 Monaco Editor 中删除某些错误?
- jquery - 没有提交按钮的dataTable中的下拉列表
- sql - 查询耗时过长
- ldap - 拍打失败!我该如何解决这个问题
- google-cloud-platform - 如何在大查询中找到所有项目的表名和创建者列表?
- mysql - mysql中的UDF函数
- html - 我有一个由伪元素组成的纯 CSS 工具提示,将内容作为属性,如何添加工具提示的链接?
- shell - Shell Script Entry(path() 当我将它们移动到特定目录时发生变化
- android - 在 values 文件夹中为 strings.xml 创建符号链接