22,294
社区成员
发帖
与我相关
我的任务
分享WHERE b.ghao LIKE a.ghao AND a.riqi = '2010-01-25 '
---
条件错了吧。
b.ghao like a.ghao+'j%'SELECT A.单号,
SUM(补白菜数) AS 补白菜数,
SUM(补其他货物数) AS 补其他货物数
FROM 主表 AS A
LEFT JOIN (
SELECT 单号,
CASE WHEN EXISTS(SELECT * FROM 明细表
WHERE T.单号 = 单号 AND 货物名称 = '白菜')
THEN 1 ELSE 0 END AS 补白菜数,
CASE WHEN NOT EXISTS(SELECT * FROM 明细表
WHERE T.单号 = 单号 AND 货物名称 = '白菜')
THEN 1 ELSE 0 END AS 补其他货物数
FROM 明细表 AS T
WHERE 单号 LIKE '%J%'
GROUP BY 单号
) AS B
ON A.单号 NOT LIKE '%J%' AND LEFT(B.单号,3) = A.单号
GROUP BY A.单号;
--这样?
select a.单号,补白菜的次数=sum(case 货物名称 when '白菜' then 1 else 0 end),
补其他菜的次数=sum(case 货物名称 when '白菜' then 0 else 1 end)
from 主表 a,(select distinct * from 明细表) b
where b.单号 like a.单号+'j%'
group by a.单号
--> 测试数据: 主表
if object_id('主表') is not null drop table 主表
create table 主表 (单号 varchar(5),日期 datetime)
insert into 主表
select '001','2009-01-01' union all
select '002','2009-01-02' union all
select '001J1','2009-01-03' union all
select '001J2','2009-01-03' union all
select '002J1','2009-01-03' union all
select '002J2','2009-01-08' union all
select '002J3','2009-01-09'
--> 测试数据: 明细表
if object_id('明细表') is not null drop table 明细表
create table 明细表 (单号 varchar(5),货物名称 varchar(4))
insert into 明细表
select '001','大米' union all
select '001','萝卜' union all
select '002','香菇' union all
select '002','黄豆' union all
select '001J1','面条' union all
select '001J1','白菜' union all
select '001J2','白菜' union all
select '001J2','橙' union all
select '002J1','白菜' union all
select '002J1','橙' union all
select '002J2','大米' union all
select '002J3','香菇'
select a.单号,补白菜的次数=sum(case 货物名称 when '白菜' then 1 else 0 end),
补其他菜的次数=sum(case 货物名称 when '白菜' then 0 else 1 end)
from 主表 a,明细表 b
where b.单号 like a.单号+'j%'
group by a.单号
--结果:
单号 补白菜的次数 补其他菜的次数
----- ----------- -----------
001 2 2
002 1 3
SELECT A.单号,
SUM(CASE WHEN C.货物名称 = '白菜' THEN 1 ELSE 0 END) AS 补白菜数,
SUM(CASE WHEN C.货物名称 = '白菜' THEN 0 ELSE 1 END) AS 补其他货物数
FROM 主表 AS A
JOIN 主表 AS B
ON B.单号 LIKE A.单号 + '_%'
AND A.单号 NOT LIKE '%J%' AND LEN(A.单号) = 3
JOIN 明细表 AS C
ON B.单号 = C.单号
GROUP BY A.单号;