要求生成如下格式的查询:
入库日期 材料类别 材料名称 规格材质 单位 数量 1998.02.23 钢材 不等边角钢 L125*80*10 Q235 t 0.05200 1998.02.23 钢材 不锈管 Φ108*4.5 1Cr18Ni9T t 27.60000 1998.02.23 钢材 不锈管 Φ159*5 1Cr18Ni9T t 0.11000 1998.02.23 钢材 不锈管 Φ159*5.5 1Cr18Ni9T t 108.00000 1998.02.23 钢材 不锈管 Φ57*3.5 1Cr18Ni9Ti t 0.12600 1998.02.23 钢材 不锈管 Φ60*4 1Cr18Ni9Ti t 0.33000 1998.02.23 钢材 不锈管 Φ108*4 1Cr18Ni9T t 0.01300 1998.02.23 钢材 不锈管 Φ10*2 1Cr18Ni9T t 0.87500 1998.02.23 钢材 不锈管 Φ14*2 1Cr18Ni9T t 2.76100 1998.02.23 钢材 不锈管 Φ14*3 1Cr18Ni9T t 0.10400 . . 钢材合计 t 139.97100 1998.03.18 化工产品 氩气 瓶 19.00000 1998.04.28 化工产品 乙炔 瓶 94.00000 1998.04.23 化工产品 氩气 瓶 20.00000 1998.04.29 化工产品 氧气 瓶 156.00000 1998.04.29 化工产品 喷漆 瓶 2.00000 1998.05.26 化工产品 喷漆 瓶 10.00000 1998.05.26 化工产品 氧气 瓶 119.00000 . . 化工产品合计 瓶 420.00000 1998.01.01 有色金属 黄铜棒 Φ35 Kg 5.20000 1998.01.01 有色金属 黄铜板 δ =0.75 Kg 4.50000 1998.01.01 有色金属 黄铜板 δ =2 Kg 7.60000 1998.01.13 有色金属 黄铜管 Φ10*2 Kg 2.50000 1998.01.13 有色金属 黄铜管 Φ12*3 Kg 2.50000 1998.01.13 有色金属 黄铜棒 Φ13 Kg 4.50000 1998.01.13 有色金属 黄铜管 Φ6*1 Kg 5.20000 . . 有色金属合计 Kg 32.00000
代码如下:
SELECT ; 入库日期,;
padr(材料类别,len(材料类别)+4,\\ 材料名称,; 规格材质,; 单位,;
数量*1000/1000 as 数量,; 1 as FLAGS ; from 材料入库 ; union all ; SELECT ;
{..} as 入库日期,;
alltrim(材料类别)+\合计\as 材料类别 ,; \as 材料名称,; \as 规格材质,; 单位 ,;
SUM(数量) AS 数量,; 2 as FLAGS ; from 材料入库 ; group by 材料类别 ; order by 2,7 ; INTO table temp ;
其中添加的字段 FLAGS 用于数据排序.
只要记住 union 中每节 SQL SELECT 命令产生的结果中,字段个数、字段类型、字段长度、字段顺序上都完全一样的,才能进行联合。
而在分析一段很长的、又使用了 union 的 SQL SELECT 命令,可以按 union 分成一条一条 SQL SELECT 命令,然后再去分析每一条 SQL SELECT 命令,看每条命令是什么表采用什么链接类型进行链接,过滤条件是什么,按什么进行分组,进行什么样的字段汇总函数。只要懂得了 SQL SELECT 命令的工作流程顺序,再复杂的 SQL SELECT 命令都可以很快就看明白。