从天数数组中获取天数[重复]
Posted
技术标签:
【中文标题】从天数数组中获取天数[重复]【英文标题】:Get Day from array of days [duplicate] 【发布时间】:2019-06-13 08:28:20 【问题描述】:我正在尝试在一长串日期 (TxnDate) 中捕获一周中的特定日期。我正在使用的以下命令引发以下错误:
列名“TxnDay”无效。
代码
Select DATENAME(dw, ft.[TxnDate]) as TxnDay, ft.[ProductCode], ft.[Site] from dbo.FactTransactions as Ft
Where ft.[Site] = '1' and TxnDay = 'Tuesday'
编辑:我也尝试了以下错误:
列名“TxnDay”无效。
Select ft.[TxnDate], ft.[ProductCode], ft.[Site] from
dbo.FactTransactions as Ft
Where ft.[Site] = '1' and ft.[TxnDate] in (SELECT DATENAME(dw, ft.
[TxnDate]) as TxnDay where TxnDay = 'Sunday')
【问题讨论】:
消息很清楚。表/视图FactTransactions
上是否存在列TxnDay
?您的日期解析不是这里的问题。
@EzLo No TxnDate 变为 TxnDay
在这两种情况下,您都在通过 TxnDay
对您的 WHERE
进行过滤,您应该重复您在选择时使用的相同表达式以改为 TnxDay
。
@EzLo 是的 - 确实是重复的! Select DATENAME(dw, ft.[TxnDate]) as TxnDate, ft.[ProductCode], ft.[Site] from dbo.FactTransactions as Ft Where DATENAME(dw, ft.[TxnDate]) = 'Tuesday'
【参考方案1】:
除非我遗漏了什么,否则我不确定你是否需要 WHERE
子句中的子查询 - 你不能这样做:
select
ft.[TxnDate],
ft.[ProductCode],
ft.[Site]
from dbo.FactTransactions as ft
Where
ft.[Site] = '1'
and DATENAME(dw, ft.[TxnDate]) = 'Sunday'
【讨论】:
【参考方案2】:嗨,不要在 where 子句中使用列的别名。解决方案如下。
Select DATENAME(dw, ft.[TxnDate]) as TxnDay, ft.[ProductCode], ft.[Site] from
dbo.FactTransactions as Ft
Where ft.[Site] = '1' and DATENAME(dw, ft.[TxnDate])= 'Tuesday'
【讨论】:
以上是关于从天数数组中获取天数[重复]的主要内容,如果未能解决你的问题,请参考以下文章