我对 SQL 非常陌生,正在做一个小型项目作为练习。我想创建一个数据透视表,很好地总结所有发现,但在错误消息方面遇到一些问题。
将数据类型 varchar 转换为 bigint 时出错。
我的持续时间以秒为单位,但想将其格式设置为表中的
XX hours, XX minutes, XX seconds
。让我头疼的代码块是:
SELECT 'Total hours ridden', [Member], [Casual]
FROM
(
SELECT
member_casual,
--ride_id,
--DATENAME(MONTH, started_at) AS [Month],
--rideable_type,
--day_of_week,
ride_length_in_sec =** CONCAT(
SUM(CAST(ride_length_in_sec AS BIGINT))/3600,' ', 'hours',' ',
(SUM(CAST(ride_length_in_sec AS BIGINT))%3600)/60,' ', 'minutes',' ',
(SUM(CAST(ride_length_in_sec AS BIGINT))%3600)%60,' ', 'seconds'
)**
FROM
AllCombined
GROUP BY member_casual
) AS Src2
PIVOT
(
MAX(ride_length_in_sec)
FOR member_casual
IN ([Member], [Casual])
) AS Pvt2
我很确定是 CONCAT 位给我带来了麻烦,因为我已经在 SELEC 子句的不同查询中成功使用了该代码块。任何和所有的帮助将不胜感激。
到目前为止,我已尝试将列的数据类型更改为 BIGINT,希望摆脱“CAST”可能有效,但这给了我同样的错误。我尝试使用其他约定(使用+号)来连接,但什么也没有。
对于这些行,您尝试组合 INT 和字符串,您需要在连接之前将 int 转换为字符串:
CAST(SUM(CAST(ride_length_in_sec AS BIGINT))/3600 as VARCHAR(500)),' ', 'hours',' ',
上面将首先进行求和和除法,然后将其转换为 varchar,这将允许您使用 concat,因为您无法连接 int 和 string。
对要求和的每一行执行此操作。