sql - 使用 Case 语句在 T SQL 查询中接收重复项
问题描述
我创建了以下 case 语句来根据商品销售计量单位进行一些乘法运算,对于此示例,即使我将 SalesUoM 变量声明为加仑,它也会对加仑和磅进行数学运算。
declare @SalesUOM as nvarchar(30)
declare @drumqty as nvarchar(30)
Set @SalesUOM = 'GAL'
Set @drumqty = '3'
SELECT DISTINCT
Case
--- when @SalesUOM = 'DRUM' then ( @drumqty * T1.BaseQty )
-- when @SalesUOM = 'PALLET' then ( @drumqty * T4.BaseQty )
--when @SalesUOM = 'PAIL' then ( @drumqty * T6.BaseQty )
--when @SalesUOM = 'TOTE' then ( @drumqty * T8.BaseQty )
when @SalesUOM = 'LB' then ( @drumqty * T10.BaseQty )
When @SalesUOM = 'GAL' then (@drumQty * T12.BaseQty)
Else '0' End as 'Item Qty'
FROM OUGP T0
--INNER JOIN UGP1 T1 ON T0.[UgpEntry] = T1.[UgpEntry]
--INNER JOIN UGP1 T4 on T0.[UgpEntry] = T4.[UgpEntry]
--INNER JOIN UGP1 T6 on T0.[UgpEntry] = T6.[UgpEntry]
--INNER JOIN UGP1 T8 on T0.UgpEntry = T8.UgpEntry
inner JOIN UGP1 T10 on T0.UgpEntry = T10.UgpEntry
inner JOIN UGP1 T12 on T0.UgpEntry = T12.UgpEntry
--INNER JOIN OUOM T2 ON T0.[BaseUom] = T2.[UomEntry]
--Inner Join OUOM T3 on T1.[UomEntry] = T3.[UomEntry] AND T3.UOMCODE in ('DR-15', 'DR-30', 'DR-55')
--Inner Join OUOM T5 on T4.[UomEntry] = T5.[UomEntry] and T5.UOMCODE = 'PALLET'
--left Join OUOM T7 on T6.UoMEntry = T7.UomEntry and T7.UOMCODE = 'PAIL-5'
--left Join OUOM T9 on T8.UomEntry = T9.UomEntry AND T9.UomCode = 'TOTE'
Left Join OUOM T11 on T10.UomEntry = T11.UomEntry and T11.UomCode = 'LB'
Left Join OUOM T13 on T12.UomEntry = T13.UomEntry and T13.UomCode = 'GAL'
Left join OITM on T0.UgpCode = OITM.ItemCode
WHERE
OITM.ItemCode = '0000000'
解决方案
因为您没有在 where 子句或内部联接中过滤 @SalesUOM 上的结果集。T10 和 T12 指向同一个表 UGP1。
以下是可以解决您的问题的两种方法 1. 在 where 子句中添加 T11.UomCode = @SalesUOM 和 T13.UomCode = @SalesUOM 2. 替换以下语句“Left Join OUOM T11 on T10.UomEntry = T11.UomEntry and T11.UomCode = 'LB' 在 T12.UomEntry = T13.UomEntry 和 T13.UomCode = 'GAL' 上左加入 OUOM T13"
with below statements
Inner Join OUOM T11 on T10.UomEntry = T11.UomEntry and T11.UomCode = @SalesUOM
推荐阅读
- android - Robolectric 是单元测试还是集成测试?
- c# - C# 库适用于 .NET Core 3.1,但不适用于 UWP
- flutter - Flutter - 文本可见时文本字段失去焦点
- php - 每 4 个 div 包裹在一个 div 中
- python - 雪花 SQL 安装期间的错误
- asp.net-core - 全球防伪令牌验证问题
- c# - Plesk 网站中的 Hangfire 重复作业无法正常工作
- javascript - IE11 - 无法添加第二个 optgroup 来选择
- android - 应用停止 android studio 时清除通知
- reactjs - 反应公用文件夹的使用 - 何时使用它以及它是如何工作的?