仅当 SQL 查询中存在列时,如何使用 CASE WHEN?[关闭]

How do I use CASE WHEN only if a column exists in my SQL query? [closed]

提问人:Lilcodemuffin 提问时间:11/15/2023 更新时间:11/15/2023 访问量:64

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

8天前关闭。

我正在使用 SQL Server,我正在使用此查询:

SELECT * FROM database.schema.table where PRCS_DTE > DATEADD(day, -8, CONVERT (date, SYSDATETIME()))
ORDER BY CASE WHEN NXT_PRCS_DTE IS NULL THEN cast(null as date) END;

基本上,我想将 when is NULL 转换为 DATE 数据类型。这是因为当我尝试将该表中的 NULL 值插入到该表的另一个副本中时,它在我的 python 代码中出错,因为它将 NULL 读取为 varchar,并且无法将 varchar 插入 DATE 列。NXT_PRCS_DTE

我可以做类似的事情吗

SELECT * FROM database.schema.table where PRCS_DTE > DATEADD(day, -8, CONVERT (date, SYSDATETIME()))
ORDER BY CASE WHEN  EXISTS (NXT_PRCS_DTE IS NULL) THEN cast(null as date) END;

因此,如果表中存在列NXT_PRCS_DTE,则它仅适用于 CASE WHEN?

蟒蛇 SQL服务器

评论

0赞 Patrick Hurst 11/15/2023
更改 your 的内容不会对返回的数据产生影响,只会影响返回数据的顺序。如果您询问您要完成的过程,您可能会在获得答案方面取得更好的成功。ORDER BY
0赞 siggemannen 11/15/2023
问题出在别的地方。你不需要将 NULL 强制转换为任何内容,除非你做了一些非常错误的事情。任何事物的 NULL 总是可以“适合”日期。您需要发布带有一些示例数据的 python 代码,因为问题不在 SQL 中
0赞 Lilcodemuffin 11/15/2023
好的,我在这里用我的 python 脚本详细发布了另一个问题:stackoverflow.com/questions/77483749/......
0赞 T N 11/15/2023
@Lilcodemuffin - 看起来您的新帖子涉及不同的问题,与 SQL 语法无关,并且存在/不存在不确定的列。如果这是真正的问题,而这个问题是误解错误的结果,我建议你撤回这个问题。
0赞 Andrew 11/15/2023
看起来你想要动态SQL(字符串构建),你想按什么排序?由于 ORDER BY 看起来不对,它通常需要是一个列名,而不是将日期转换为 null(奇怪)。是的,似乎我们需要更多信息,这只是一个表,还是您正在处理多个表,其中一些表有此列,另一些没有。

答: 暂无答案