我使用的数据在单独的列中包含日-月-年,我想使用月和年组合创建一个过滤器。举个例子:
transaction_id | customer | amount | day | month | year
---------------+----------+--------+-----+-------+-------
1 100 1000 01 05 2019
2 100 500 24 11 2018
3 100 2700 26 10 2018
4 205 800 19 11 2020
5 333 8000 05 05 2020
6 333 500 02 10 2019
7 333 200 19 12 2018
如果我只想回来 transaction_id
从2019年1月开始,是否会通过类似于月+年的concat的方式来实现,然后使用别名创建一个新列?我试过做这样的事,但就在那一年,它又回来了:
SELECT transaction_id, concat(MONTH, YEAR) AS FULLDATE
FROM sample_table
它以201901(2019年1月)的形式返回fulldate值,但我想知道这是否确实是正确的方法。
此外,如果是这样,我如何在where子句中使用这个fulldate:
SELECT transaction_id, concat(MONTH, YEAR) AS FULLDATE
FROM sample_table
WHERE FULLDATE >= 201901
如何将其构建到子查询中以使用别名?或者我应该试试having子句之类的吗?我两个都试过了,但都没能正常运行。也许还有更好的办法?
1条答案
按热度按时间djp7away1#
我建议改为使用数学函数:
这是假设
year
以及month
是数字——这似乎是合理的。如果它们是字符串,请使用字符串比较:注意:如果列是数字,这将产生
20191
一月,这不是你想要的。在sql azure中,您实际上可以将其定义为计算列:
(或
concat()
如果列是字符串。)