【发布时间】:2015-10-19 22:04:20
【问题描述】:
我在 postgres(在 PGAdmin 上)中编写了一个查询,我想将它放在 SSMS2012 中用于报告目的,但它似乎不允许 CASE 语句,这是我的查询:
SELECT *
FROM OPENQUERY (POSTGRESQL,
'SELECT
Table1 AS Table_1,
CASE Table2
WHEN 75887 THEN ''1''
WHEN 75888 THEN ''2''
WHEN 75889 THEN ''3''
WHEN 75890 THEN ''4''
WHEN 75891 THEN ''5''
WHEN 75892 THEN ''6''
END AS Table_2,
DateTable1 AS DateTime
FROM SuperTable1 ')
我得到了错误:
返回链接服务器“POSTGRESQL”的 OLE DB 提供程序“MSDASQL” 消息“不支持请求的转换。”。
消息 7341,第 16 级,状态 2,第 1 行
无法从链接服务器“POSTGRESQL”的 OLE DB 提供程序“MSDASQL”获取列“[MSDASQL].table_2”的当前行值。
我注意到,如果我删除整个 case 语句,则在 PGAdmin 中检索 SELECT 语句中的列中的数据没有问题,并且整个事情(包括 CASE 语句)都可以正常工作。
【问题讨论】:
-
案例表达,不是案例陈述...
-
也许你需要做 CASE WHEN Table2 = 75887 THEN ...WHEN WHEN Table2 = ...?
-
Table1 是字段名吗?如果没有,您可能必须像“Table1”一样引用它。另外,我不完全确定 DateTable1 是否应该写为 to_char(DateTable1, ''YYYY-MM-DD HH24:MI:SS'') - 尝试一下
-
table1 是字段名是的,不幸的是写 to_char(DateTable1, ''YYYY-MM-DD HH24:MI:SS'') 没有解决问题,仍然得到同样的错误跨度>
-
你真的有一个名为
Table2的列吗? - 非常奇怪的命名约定
标签: sql sql-server postgresql case