【问题标题】:Get data for the SQL Query获取 SQL 查询的数据
【发布时间】:2018-11-09 22:06:13
【问题描述】:

我有以下场景,并寻找以下结果作为输出,有人可以帮助我实现它。

CREATE TABLE ##RUN_ID 
(
    RUN_ID INT, 
    EMPID INT, 
    STARTDT VARCHAR(10), 
    VAL CHAR(1)
);

INSERT INTO ##RUN_ID (...) 
VALUES (1, 1, '1/1/2018', 'A'), (2, 1, '2/1/2018', 'A'),
       (3, 1, '12/1/2017', 'A'), (4, 1, '3/1/2018', 'A'),
       (5, 1, '2/1/2018', 'A')

SELECT * FROM ##RUN_ID

输出:

RUN_ID EMPID STARTDT   VAL
------ ----- --------- ---
3      1     12/1/2017 A
5      1      2/1/2018 A

【问题讨论】:

  • 欢迎来到 Stack Overflow。这不是家庭作业完成服务。你的老师给了你作业,而不是我们,你需要自己做作业。如果我们为你做这件事,你什么也学不到。如果您无法开始,请向您的老师寻求帮助;他们得到报酬来教你。祝你好运。 (如果不是功课,找一个SQL教程。这是一个非常基础的SELECT,任何教程都可以教你怎么做。)
  • 你为什么用varchar来存储日期?
  • 得到预期结果的逻辑是什么?
  • 肯·怀特……如果获取数据不复杂,可以给我查询吗?
  • 这不是一个做我的功课网站。也许你和你的classmate 应该一起工作。看来他们在任务上的进展比你到目前为止。请再次阅读我之前的评论。忽略 If it's not homework 句子,因为它显然 is homework。

标签: sql sql-server


【解决方案1】:

如果我理解正确,你想要基于year 的最新run_id 如果是这样,那么你可以使用correlation 方法:

SELECT r.*
FROM RUN_ID r
WHERE run_id = (SELECT MAX(r1.run_id)
                FROM RUN_ID r1
                WHERE YEAR(r.STARTDT) = YEAR(r1.STARTDT)
               );

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2019-08-24
    • 2013-11-08
    • 1970-01-01
    相关资源
    最近更新 更多