gpt4 book ai didi

mysql - 坚持创建一个正常工作的 0/1 标志。终于屈服了

转载 作者:行者123 更新时间:2023-12-03 23:38:59 25 4
gpt4 key购买 nike

晚上所有。
我正在尝试创建一个非常基本的 case 语句,它在 mySQL 中用 0 或 1 存储三个场景。
我在下面的引用表链接中找到了三个字段。
本质上,我试图将任何具有“I”和“O”的 StatusCD 的 ProductID 存储为 1,只有“I”为 1,然后任何只有“O”结果且没有对应的“I”为 0 的产品。什么此数据显示的是进入仓库 ('I') 然后离开仓库 ('O') 的产品。我还有其他字段正在捕获日期差异,但最终我试图创建一个标志来忽略我们只有带有“O”状态CD 的产品# 的场景,这表明它们到达仓库的记录未正确记录并且会倾斜我们的“仓库时代”桶。
任何见解都非常感谢!
带字段的引用表:

Date       | ProductID | StatusCD
2021-01-01 | U1000 | I
2021-01-10 | U1000 | O
2021-01-10 | U2000 | I
2021-01-15 | U3000 | O

最佳答案

假设您想保留每条原始记录,您可以在此处使用分析函数:

SELECT Date, ProductID, StatusCD,
CASE WHEN SUM(StatusCD <> 'O') OVER (PARTITION BY ProductID) = 0
THEN 0 ELSE 1 END As Label
FROM yourTable
ORDER BY Date;
screen capture from demo link below
Demo
对于早于 8+ 的 MySQL 版本:
SELECT t1.Date, t1.ProductID, t1.StatusCD,
CASE WHEN t2.OpenCount = 0 THEN 0 ELSE 1 END AS Label
FROM yourTable t1
INNER JOIN
(
SELECT ProductID, SUM(StatusCD <> 'O') AS OpenCount
FROM yourTable
GROUP BY ProductID
) t2
ON t2.ProductID = t1.ProductID
ORDER BY
t1.Date;
Demo

关于mysql - 坚持创建一个正常工作的 0/1 标志。终于屈服了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67155162/

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