得,我又不会写了,向大家学习!
我有两个sql:
第一个:
SELECT a.PiCi AS '批次',CONVERT(varchar(100), b.RKDate, 23) AS '入库日期',c.YCLName AS '项目',a.LYSL AS '领用数量',
b.RKSL AS '入库数量',a.LYSL AS '实际消耗', d.XHB * b.RKSL AS '标准消耗', (a.LYSL - d.XHB * b.RKSL) AS '消耗差',
(a.LYSL - d.XHB * b.RKSL) * d.Price AS '成本对比'
FROM T_SC_SCLLD a JOIN T_SC_SCRKD b ON a.PiCi = b.PiCi
JOIN T_SC_YCLXXB c ON a.YCL = c.ID
JOIN T_SC_CBJJMX_YCLInfo d ON a.YCL = d.YCL
WHERE a.YNSH = 1 AND b.YNSH = 1
结果是这样:

第二个sql:
SELECT a.PiCi [批次], a.RKSL * c.GRGZ [工人工资],a.RKSL * c.GLFYGS [管理费用], a.RKSL * c.SYFXF [实验分析费],
a.RKSL * c.WHF [维护费], a.RKSL * c.BGFY [办公费用], a.RKSL * c.BZFY [包装费用], a.RKSL * c.FCFY [辅材费用],
a.RKSL * c.BKYJF [不可预见费], a.RKSL * c.ZJF [折旧费]
FROM T_SC_SCRKD a
JOIN T_SC_SCLLD b ON a.PiCi = b.PiCi
JOIN T_SC_CBJJMX c ON b.JJMX = c.ID
结果是这样:

两个sql批次是可以关联的,我现在要将第二张表列转行,并放入第一张表中,就是这样:
批次 入库日期 项目(工人工资、管理费用、实验分析费等就放入项目) ... 成本对比(数值放入这里)
这个sql怎么写啊
求助大大!
------解决思路----------------------
我不清楚你的具体逻辑,但是,列转行的话,可以用UNPIVOT
你参考下
SELECT a.PiCi AS '批次',CONVERT(varchar(100), b.RKDate, 23) AS '入库日期',c.YCLName AS '项目',a.LYSL AS '领用数量',
b.RKSL AS '入库数量',a.LYSL AS '实际消耗', d.XHB * b.RKSL AS '标准消耗', (a.LYSL - d.XHB * b.RKSL) AS '消耗差',
(a.LYSL - d.XHB * b.RKSL) * d.Price AS '成本对比'
FROM T_SC_SCLLD a JOIN T_SC_SCRKD b ON a.PiCi = b.PiCi
JOIN T_SC_YCLXXB c ON a.YCL = c.ID
JOIN T_SC_CBJJMX_YCLInfo d ON a.YCL = d.YCL
WHERE a.YNSH = 1 AND b.YNSH = 1
UNION ALL
SELECT [批次],NULL,[项目],NULL,NULL,NULL,NULL,NULL,[成本对比] FROM (
SELECT DISTINCT a.PiCi [批次], a.RKSL * c.GRGZ [工人工资],a.RKSL * c.GLFYGS [管理费用], a.RKSL * c.SYFXF [实验分析费],
a.RKSL * c.WHF [维护费], a.RKSL * c.BGFY [办公费用], a.RKSL * c.BZFY [包装费用], a.RKSL * c.FCFY [辅材费用],
a.RKSL * c.BKYJF [不可预见费], a.RKSL * c.ZJF [折旧费]
FROM T_SC_SCRKD a
JOIN T_SC_SCLLD b ON a.PiCi = b.PiCi
JOIN T_SC_CBJJMX c ON b.JJMX = c.ID
)TB
UNPIVOT([成本对比]FOR[项目]IN([工人工资],[管理费用],[实验分析费],[维护费],[办公费用],[包装费用],[辅材费用],[不可预见费],[折旧费]))U