sql - 案例、变量和一堆垃圾
问题描述
我有一个巨大的材料清单,我的客户希望能够使用参数 (SSRS) 按尺寸对这些材料进行分类。
我尝试使用 SSRS 进行过滤但没有成功,以及我的 SQL 代码中的几次失败尝试。问题是有些材料很简单,比如'2" X 3/4" PVC SCH80 BUSHING SPIGOT X SOCKET',但其他的更像是'HOSE, DISCHARGE',我们会有一个“Other " 这将显示的类别。
我的代码的案例部分是我绊倒的地方。这对吗?我应该使用案例还是其他东西?我知道连接和第一个 WHERE 是正确的。重要的是要注意,大小总是在描述的开头,它永远不会在名称或任何东西的中间,但是字符的数量确实会有所不同,有时会是 3/4" 或 2 "等等。最后的勾号 (") 也总是在最后。
SELECT MATERIALLEAF.DESCRIPTION
FROM STORERMSTOCK
JOIN MATERIALLEAF ON MATERIALLEAF.MATERIALSID = STORERMSTOCK.MATERIALSID
JOIN CWCUSTFIELD ON CWCUSTFIELD.TABLEOBJECTID = STORERMSTOCK.MATERIALSID
WHERE (CWCUSTFIELD.CUSTFIELDID = '5')
AND CASE@sizes
WHEN'3/4"' THEN
(SELECT MATERIALLEAF.DESCRIPTION
FROM STORERMSTOCK
WHERE MATERIALLEAF.DESCRIPTION LIKE'3/4"%')
ELSE
@sizes
END
我希望看到一个可以按材料大小过滤的列表,以及另一个选择,其中包含在描述开头没有大小的所有内容。
解决方案
你这样做是不对的。您不能使用 CASE 表达式返回整个子查询。
看起来你想要的更像是这样的:
WHERE (
@sizes='3/4"' AND MATERIALLEAF.DESCRIPTION LIKE'3/4"%'
) OR
... whatever you want to do if @sizes != '3/4"'.
推荐阅读
- vue.js - Nuxt 默认进度条在导航到没有 asyncData 或 fetch 的页面时变为红色
- javascript - 将数据传递给 jQuery modal 并打开它
- node.js - 在 nodejs.db2 中触发插入查询时出错
- css - 如何做一个在Angular中部署菜单的“粘性”按钮?
- html - 如何在电子邮件签名中调整css中的图像大小?
- git - github-actions 获取 deployment_status 事件的分支名称或 PR 编号
- ios - EKEventEditViewController EKAlarm 警报标题已损坏
- ios - 如何在 Swift 中使用宽度约束将 Xib 加载到 CollectionView?
- swift - 如何在 Swift 中声明和初始化大于 UInt64 的常量?
- postgresql - 带有部分索引的 SQLAlchemy Postgres upsert