gpt4 book ai didi

sql-server - SQL Server 动态 Order By in query,不同数据类型

转载 作者:行者123 更新时间:2023-12-03 20:00:16 24 4
gpt4 key购买 nike

SQL Server 2000

我有一个类似的查询

SELECT DISTINCT A.COLUMN1, B.COLUMN2 FROM TABLEA A, TABLEB B WHERE 
A.KEY_ID = B.FK_ID

ORDER BY CASE @ORDER_NAME
WHEN 'COL1' THEN COLUMN1
WHEN 'COL2' THEN COLUMN2
ELSE
COLUMN2
END ASC

这里 A.COLUMN1 是 varchar(50) 而 B.COLUMN2 是日期时间。当@ORDER_NAME 的值为'COL2' 时,此查询完美运行,即当order by 的类型为datetime 但当我使用'COL1' 时,它会给出错误'从字符串转换日期时间的语法错误'。

我认为这是因为 SQL Server 试图将所有列转换为日期时间类型。但是我找不到对列进行动态排序的替代语法。由于性能问题,EXEC 没有问题

我需要提到的是,我试图避免分支,否则上述内容也可以通过 IF ELSE 子句来完成。

最佳答案

没有任何数据类型转换问题的版本:

SELECT  DISTINCT 
A.COLUMN1,
B.COLUMN2
FROM TABLEA A,
TABLEB B
WHERE A.KEY_ID = B.FK_ID
ORDER BY
CASE @ORDER_NAME WHEN 'COL1' THEN COLUMN1 ELSE NULL END,
CASE @ORDER_NAME WHEN 'COL2' THEN COLUMN2 ELSE NULL END

关于sql-server - SQL Server 动态 Order By in query,不同数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1503815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com