【发布时间】:2017-01-06 12:31:18
【问题描述】:
我正在尝试将两个数据库放在一个视图中,以显示来自两个系统的发票。
一个表格按日期列出发票(即 1 月的销售额是任何具有 1 月日期的发票),另一个表格按年份和期间列出发票(因此,1 月的销售额是“2017”期间“7” - 与日期无关)。由于第二个系统允许在该期间日期范围之外的期间内过帐发票,因此我尝试使用案例语句从年份/期间字段创建日期字段,以显示与发票相同的销售额系统会。
LedgerYear +
case
when LedgerPeriod = 4 then '-10-01'
when LedgerPeriod = 5 then '-11-01'
when LedgerPeriod = 6 then '-12-01'
when LedgerPeriod = 7 then '-01-01'
when LedgerPeriod = 8 then '-02-01'
when LedgerPeriod = 9 then '-03-01'
when LedgerPeriod = 10 then '-04-01'
when LedgerPeriod = 11 then '-05-01'
when LedgerPeriod = 12 then '-06-01'
when LedgerPeriod = 1 then '-07-01'
when LedgerPeriod = 2 then '-08-01'
when LedgerPeriod = 3 then '-09-01'
end
as 'InvDate',
我得到以下内容..
Error converting data type varchar to numeric.
据推测,LedgerYear 是数字,'-10-01' 等是 varchars。联合中另一个表中的 InvDate 是 'datetime' 格式。
如何使 case 语句的输出为日期时间格式?
【问题讨论】:
-
样本数据和预期结果对于解释问题非常有帮助。
-
试试这个 select CAST(CAST(ledgeryear as float) as int)
-
你使用的是哪个版本的sql server?
-
SQL Server 2012
标签: sql sql-server sql-server-2012 ssms