我有一个包含以下列的表格:DATE, TICKER, and ID.
基本上,我试图用下面的代码做的是选择所有的股票代码及其相应的ID(它可以有多个ID)。但是,在表中,有多个条目,其中代码可以具有相同的ID,但属于不同的日期,因此在这种情况下,我选择具有最小日期的ID。
SELECT
MIN(DATE),
TICKER,
ID
FROM Names
GROUP BY
TICKER,
ID
WHERE TICKER IN ('A', 'B')
现在,当我独立尝试命令时,它可以工作,但是当我将GROUP BY
和WHERE IN
命令组合在一起时,我认为出现了问题,因为我收到语法错误。
如果有什么不清楚,请告诉我,我会尽力澄清。
答案 0 :(得分:5)
WHERE
子句在GROUP BY
子句
SELECT MIN(DATE), TICKER, ID
FROM Names
WHERE TICKER IN ('A', 'B')
GROUP BY TICKER, ID
答案 1 :(得分:1)
您在GROUP BY
子句之前使用WHERE
子句,维护子句序列。
SELECT MIN(DATE), TICKER, ID
FROM Names
WHERE TICKER IN ('A', 'B')
GROUP BY TICKER, ID
答案 2 :(得分:1)
如果没有GROUP BY,WHERE IN将在最后,但如果GROUP BY存在则应该在最后。像这样使用
SELECT MIN(DATE),
TICKER, ID
FROM Names
WHERE TICKER IN ('A', 'B')
GROUP BY TICKER, ID
答案 3 :(得分:1)
执行顺序
执行SQL查询时,将按以下顺序执行。
FROM
ON
JOIN
WHERE
GROUP BY
HAVING
SELECT
DISTINCT
ORDER BY
TOP
这是执行顺序
SELECT MIN(DATE),TICKER, ID
FROM Names
WHERE TICKER IN ('A', 'B')
GROUP BY TICKER, ID
有关更多信息,请使用Link