sql 模糊查询,该怎么处理
sql 模糊查询
我们的数据库 PC进 SA是销货单 SB退回单 SD折让单
现在要 显示SB退货的数量 最后语句是LIKE‘S%'如何才能让他区分SA SB SD这个单子没有关系,我们SA SB只是开头后面没有重复的那种
------解决思路----------------------
是不是只要 SA、SB,不要 SD?
------解决思路----------------------
上面 LIKE 的结果忘了贴了。
我们的数据库 PC进 SA是销货单 SB退回单 SD折让单
DECLARE @m1s DATETIME
DECLARE @m1e DATETIME
DECLARE @m2s DATETIME
DECLARE @m2e DATETIME
DECLARE @m3s DATETIME
DECLARE @m3e DATETIME
DECLARE @m4s DATETIME
DECLARE @m4e DATETIME
DECLARE @m5s DATETIME
DECLARE @m5e DATETIME
DECLARE @m6s DATETIME
DECLARE @m6e DATETIME
DECLARE @m7s DATETIME
DECLARE @m7e DATETIME
DECLARE @m8s DATETIME
DECLARE @m8e DATETIME
DECLARE @m9s DATETIME
DECLARE @m9e DATETIME
DECLARE @m10s DATETIME
DECLARE @m10e DATETIME
DECLARE @m11s DATETIME
DECLARE @m11e DATETIME
DECLARE @m12s DATETIME
DECLARE @m12e DATETIME
SET @m1s = '2013-01-01'
SET @m1e = '2013-01-31'
SET @m2s = '2013-02-01'
SET @m2e = '2013-02-28'
SET @m3s = '2013-03-01'
SET @m3e = '2013-03-31'
SET @m4s = '2013-04-01'
SET @m4e = '2013-04-30'
SET @m5s = '2013-05-01'
SET @m5e = '2013-05-31'
SET @m6s = '2013-06-01'
SET @m6e = '2013-06-30'
SET @m7s = '2013-07-01'
SET @m7e = '2013-07-31'
SET @m8s = '2013-08-01'
SET @m8e = '2013-08-31'
SET @m9s = '2013-09-01'
SET @m9e = '2013-09-30'
SET @m10s = '2013-10-01'
SET @m10e = '2013-10-31'
SET @m11s = '2013-11-01'
SET @m11e = '2013-11-30'
SET @m12s = '2013-12-01'
SET @m12e = '2013-12-31'
SELECT cast(a.prd_no as varchar(15)) as 货号,cast(b.name as varchar(30)) as 货品名称,
累计数量=SUM(CASE WHEN a.PS_DD BETWEEN @m1s AND @m1e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m2s AND @m2e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m3s AND @m3e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m4s AND @m4e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m5s AND @m5e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m6s AND @m6e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m7s AND @m7e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m8s AND @m8e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m9s AND @m9e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m10s AND @m10e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m11s AND @m11e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m12s AND @m12e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),
累计金额=SUM(CASE WHEN a.PS_DD BETWEEN @m1s AND @m1e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m2s AND @m2e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m3s AND @m3e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m4s AND @m4e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m5s AND @m5e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m6s AND @m6e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m7s AND @m7e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m8s AND @m8e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m9s AND @m9e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m10s AND @m10e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m11s AND @m11e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)+SUM(CASE WHEN a.PS_DD BETWEEN @m12s AND @m12e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
一月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m1s AND @m1e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),一月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m1s AND @m1e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
二月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m2s AND @m2e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),二月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m2s AND @m2e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
三月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m3s AND @m3e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),三月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m3s AND @m3e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
四月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m4s AND @m4e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),四月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m4s AND @m4e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
五月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m5s AND @m5e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),五月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m5s AND @m5e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
六月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m6s AND @m6e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),六月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m6s AND @m6e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
七月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m7s AND @m7e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),七月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m7s AND @m7e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
八月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m8s AND @m8e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),八月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m8s AND @m8e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
九月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m9s AND @m9e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),九月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m9s AND @m9e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
十月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m10s AND @m10e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),十月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m10s AND @m10e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
十一月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m11s AND @m11e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),十一月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m11s AND @m11e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END),
十二月数量=SUM(CASE WHEN a.PS_DD BETWEEN @m12s AND @m12e THEN (CASE WHEN a.ps_id='SA' THEN a.qty ELSE -a.qty END ) ELSE 0 END),十二月金额=SUM(CASE WHEN a.PS_DD BETWEEN @m12s AND @m12e THEN (CASE WHEN a.ps_id='SA' THEN a.AMT ELSE -a.AMT END ) ELSE 0 END)
FROM TF_PSS a,prdt b
Where a.prd_no=b.prd_no and a.ps_id LIKE 'S%'
GROUP BY a.prd_no,b.name
Order by a.prd_no
现在要 显示SB退货的数量 最后语句是LIKE‘S%'如何才能让他区分SA SB SD这个单子没有关系,我们SA SB只是开头后面没有重复的那种
------解决思路----------------------
是不是只要 SA、SB,不要 SD?
with table1(ps_id) AS (
SELECT 'SA01' UNION ALL
SELECT 'SB02' UNION ALL
SELECT 'SD03'
)
SELECT *
FROM table1
WHERE ps_id LIKE 'S[A-B]%'
------解决思路----------------------
上面 LIKE 的结果忘了贴了。
ps_id
-----
SA01
SB02