表1:sp_jg
fdbs spid hshjj
LYD SP01 1
LYD SP02 3
LYD SP03 3
LYD SP04 6
WHD SO01 1.5
WHD SP02 4
WHD SP03 2.5
XAD SP01 8
XAD SP03 3
XAD SP04 7
.....希望通过查询SPID得到结果如下效果:
spid LYD WHD XAD
SP01 1 1.5 8
SP02 3 4 null
sp03 3 2.5 3
sp04 6 nul 7
.....
fdbs spid hshjj
LYD SP01 1
LYD SP02 3
LYD SP03 3
LYD SP04 6
WHD SO01 1.5
WHD SP02 4
WHD SP03 2.5
XAD SP01 8
XAD SP03 3
XAD SP04 7
.....希望通过查询SPID得到结果如下效果:
spid LYD WHD XAD
SP01 1 1.5 8
SP02 3 4 null
sp03 3 2.5 3
sp04 6 nul 7
.....
from sp_jg
pivot(max(hshjj) for fdbs in ([LYD],[WHD],[XAD])) a
MAX(CASE WHEN fdbs = 'lyd' THEN hshjj
ELSE NULL
END) lyd ,
MAX(CASE WHEN fdbs = 'whd' THEN hshjj
ELSE NULL
END) whd ,
MAX(CASE WHEN fdbs = 'xad' THEN hshjj
ELSE NULL
END) xad
FROM sp_jg
GROUP BY spid
pf_ckmx
djbh(单据编号)spid(商品内码)dw(单位)shl(数量)fahuoj(发货计)
XSALYD00056242 SPH00002227 个 10.00 10个
XSALYD00057046 SPH00002227 个 1.00 1个
XSAWHD00022011 SPH00004220 个 1.00
XSAWHD00022063 SPH00003069 个 1.00 1个
XSAWHD00022063 SPH00003134 条 2.00 2条
XSAWHD00022068 SPH00004507 支 5.00 5支
XSAWHD00022068 SPH00003085 支 5.00 5支
XSAWHD00022068 SPH00003084 支 5.00 5支
XSAWHD00022068 SPH00002910 支 3.00 3支
XSAWHD00022072 SPH00003016 双 3.00 3双
......
表2:pf_ckhz
djbh(单据编号)dwbh(单位编号)bendian(本店)
XSALYD00056242 DWI00009982 LYD
XSALYD00057046 DWI00009982 LYD
XSAWHD00022011 DWI00005513 WHD
XSAWHD00022063 DWI00006560 WHD
XSAWHD00022068 DWI00006059 WHD
XSAWHD00022072 DWI00005704 WHD
XSAWHD00022073 DWI00005739 WHD
XSAWHD00022074 DWI00005729 WHD
XSAWHD00022082 DWI00006250 WHD
XSAWHD00022093 DWI00006250 WHD
.........
表3:spkfk(此表为总表,包括所有的商品编号、内码、名称)
spid(商品内码)spbh(商品编号)spmch(商品名称)dwshpgg(商品规格)
SPH00000001 T090003006 0158P跳绳 条 1件*30扎*10条
SPH00000002 W130201001 083调色盘 个 1件*20包*30个
SPH00000003 W130201002 086调色盘 个 1件×24包×25个
SPH00000004 W130201003 087调色盘 个 1件*18包*25个
SPH00000005 T150701001 1.5KG铁饼 个 1个
SPH00000006 T150701006 1.5KG铁饼 个 1个
SPH00000007 B040303008 100CM钢直尺 支 1件×120支
SPH00000008 T180001077 100KG电镀杠铃 付 1付
SPH00000009 Y050001004 昆仑10寸电铃 个 1件*6个
SPH00000010 T111204005 10KG沙背心 付 1件×5付
......
我最后的需要的结果就如下(求各个店的各个商品所卖的总数)
spbh spmch YWD(义乌店)WHD(武汉店)XAD(西安店)
SPH00000001 0158P跳绳 n件n条 n件n条 ...
SPH00000002 083调色盘 n件n个 ... ...
SPH00000003 086调色盘 n件n条 ... ...
SPH00000004 087调色盘 ... ...
SPH00000005 1.5KG铁饼 ...
SPH00000006 1.5KG铁饼 ...
....
还需要什么条件,我再提供表
如:
select * from (
select * from test
) as oldTable
pivot (
count(1) from spid in (产品1,产品2,......)
) as pivottable如果你认为这类做法实现不了你的需求,比如说产品比较多,哪就用原始办法来实现,把所有spid查询出来,然后针对每个spid进行单独查询,只不过这样数据库操作就多了!