gpt4 book ai didi

sql - 修改SELECT语句的返回值(SQL)【优化查询】

转载 作者:行者123 更新时间:2023-12-02 15:42:02 24 4
gpt4 key购买 nike

问题:数据库列具有三态 (0,1,2)。每个值都在服务器端使用。

客户端代码(无法再更改)只能理解“0,1”。在客户端 View 中,“1”与“2”相同。所以我想将数据库中的 SQL 查询更改为返回“1”,如果特定值为 > 0。

我当前的解决方案是将 2 个选择(使用 UNION SELECT)与不同的 WHERE-Clauses 结合起来,并返回“1”或“0”作为静态值。现在,我正在寻找一种仅在一个 SELECT 语句中“翻译”值的解决方案。

这是我目前的解决方案:

 SELECT
dbo.Nachricht.NachrichtID, dbo.Nachricht.Bezeichnung, '1' AS BetrifftKontoeinrichtung,
FROM dbo.Nachricht INNER JOIN dbo.AdditionalData
ON dbo.Nachricht.NachrichtID = dbo.AdditionalData.NachrichtID

WHERE (dbo.Nachricht.NachrichtID in ( 450,439 ))
AND dbo.AdditionalData.BetrifftKontoeinrichtung > 0

UNION SELECT
dbo.Nachricht.NachrichtID, dbo.Nachricht.Bezeichnung, '0' AS BetrifftKontoeinrichtung,
FROM dbo.Nachricht INNER JOIN dbo.AdditionalData
ON dbo.Nachricht.NachrichtID = dbo.AdditionalData.NachrichtID

WHERE (dbo.Nachricht.NachrichtID in ( 450,439 ))
AND dbo.AdditionalData.BetrifftKontoeinrichtung = 0

最佳答案

您可以使用 case 语句,如下所示:

SELECT
dbo.Nachricht.NachrichtID, dbo.Nachricht.Bezeichnung,
CASE WHEN dbo.AdditionalData.BetrifftKontoeinrichtung = 0
THEN '0' ELSE '1'
END AS BetrifftKontoeinrichtung,
FROM dbo.Nachricht
INNER JOIN dbo.AdditionalData
ON dbo.Nachricht.NachrichtID = dbo.AdditionalData.NachrichtID
WHERE (dbo.Nachricht.NachrichtID in ( 450,439 ))

关于sql - 修改SELECT语句的返回值(SQL)【优化查询】,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2681784/

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