【发布时间】:2024-04-23 06:00:01
【问题描述】:
我有一个包含大约 100 列的表,名为 F1、F2、... F100。 我想逐行查询数据,如下所示:
F1: someVal1
F2: someVal2
...
我在 SP 中执行所有这些操作,因此,我正在动态生成 sql。 我已经成功生成了如下sql:
select CAST(valname as nvarchar(max)), CAST(valvalue as nvarchar(max)) from tbl_name unpivot
(
valvalue for valname in ([form_id], [F1],[F2],[F3],[F4],[F5],[F6],[F7],[F8],[F9],[F10],[F11],[F12],[F13],[F14],[F15],[F16],[F17],[F18],[F19],[F20],[F21],[F22],[F23],[F24],[F25],[F26],[F27],[F28],[F29],[F30],[F31],[F32],[F33],[F34],[F35],[F36],[F37],[F38],[F39],[F40],[F41],[F42],[F43],[F44],[F45],[F46],[F47],[F48],[F49],[F50],[F51],[F52],[F53],[F54],[F55],[F56],[F57],[F58],[F59],[F60],[F61],[F62],[F63],[F64],[F65],[F66],[F67],[F68],[F69],[F70],[F71],[F72],[F73],[F74],[F75],[F76],[F77],[F78],[F79],[F80],[F81],[F82],[F83],[F84],[F85])
) u
但是在执行这个查询时,我得到了这个异常:
“F3”列的类型与其他列的类型冲突 在 UNPIVOT 列表中指定。
我猜这是因为 F3 是 varchar(100) 而 form_id、F1 和 F2 是 varchar(50)。根据我的理解,我不应该收到此错误,因为我在 select 语句中将所有结果转换为 nvarchar(max)。
这个表有各种列,如 datetime、smallint 和 int。
此外,该表中除一列外的所有列都有SQL_Latin1_General_CP1_CI_AScollaltion
这个错误的修复方法是什么?
【问题讨论】:
标签: sql sql-server tsql unpivot