【发布时间】:2017-12-23 01:32:38
【问题描述】:
下面显示的查询导致错误
从字符串转换日期和/或时间时转换失败
请帮帮我
SELECT
a.[Prod_id], a.[ctry_id], a.[ctry_cd],
left(a.[re_ver],8) + ' (Per ' + a.[re_ver] + ')' as [re_ver],
'YTD' as [per_type],
sum(b.[unt_cas_cy_bp]) [unt_cas_cy_bp],
sum(b.[unt_cas_cy_re]) [unt_cas_cy_re],
sum(b.[unt_cas_py_act]) [unt_cas_py_act],
sum(b.[unt_cas_2py_act]) [unt_cas_2py_act]
FROM
a
INNER JOIN
b ON a.Prod_id = b.Prod_id
AND a.ctry_id = b.ctry_id
AND a.ctry_cd = b.ctry_cd
AND b.per_type = 'Monthly'
AND YEAR(LEFT(b.re_ver, 8)) * 100 + MONTH(LEFT(b.re_ver, 8))
BETWEEN YEAR(LEFT(a.re_ver, 8)) * 100 + 1
AND YEAR(LEFT(a.re_ver, 8)) * 100 + MONTH(LEFT(a.re_ver, 8))
WHERE
a.per_type = 'Yearly'
GROUP BY
a.[Prod_id], a.[ctry_id], a.[ctry_cd],
a.[re_ver], a.[per_type]
【问题讨论】:
-
它将出现在这部分
AND YEAR(LEFT(b.re_ver, 8)) * 100 + MONTH(LEFT(b.re_ver, 8)) BETWEEN YEAR(LEFT(a.re_ver, 8)) * 100 + 1 AND YEAR(LEFT(a.re_ver, 8)) * 100 + MONTH(LEFT(a.re_ver, 8))但您需要向我们展示这些列中的内容......即给我们一些示例数据 -
数据类似于2017年2月,2017年第四季度,声明为varchar数据类型
-
* 100 有什么用?
-
选择 YEAR(LEFT(b.re_ver, 8)) 如果我这样做只会得到像 2017 这样的年份。然后 *100 将得到 201700,+1 表示 201701
-
我明白了。谢谢你的解释
标签: sql-server sql-server-2008-r2