SQL语句,请高手过招。(100分)

  • 主题发起人 主题发起人 HTDYK126
  • 开始时间 开始时间
H

HTDYK126

Unregistered / Unconfirmed
GUEST, unregistred user!
一、请看以下表:
表1(进货表-top):
进货单号 进货供应商 进货仓库 .....
JH-06001 a供应商 仓库1
JH-06002 b供应商 仓库2
JH-06003 c供应商 仓库3
JH-06004 d供应商 仓库4
表2(进货表-main):
进货单号 货品编号 货品名称 业务类型 单位 进货数量 .....
JH-06001 U001 A物料 采购收货 K 10
JH-06001 U002 B物料 采购收货 pcs 15
JH-06002 U003 C物料 采购收货 K 10
JH-06002 U004 D物料 采购收货 PCS 20
JH-06003 U005 E物料 采购收货 K 10
JH-06004 U006 F物料 采购收货 PCS 20
JH-06004 U007 G物料 采购收货 PCS 20
表3(退货表-top):
退货单号 退货供应商 退货仓库 .....
TH-06001 a供应商 仓库1
TH-06002 b供应商 仓库2
TH-06003 c供应商 仓库3
TH-06004 d供应商 仓库4
表4(退货表-main):
退货单号 货品编号 货品名称 业务类型 单位 退货数量 .....
TH-06001 U001 A物料 采购退货 K 1
TH-06002 U003 C物料 采购退货 K 1
TH-06003 U005 E物料 采购退货 K 1
TH-06004 U006 F物料 采购退货 PCS 2
TH-06004 U007 G物料 采购退货 PCS 2
二、我要这样的一个结果:
仓库名称 供应商名称 业务类型 单号 货品编号 货品名称 单位 数量
仓库1 a供应商 采购收货 JH-06001 U001 A物料 K 10
仓库1 a供应商 采购收货 JH-06001 U002 B物料 PCS 15
[red]仓库1 a供应商 采购退货 TH-06001 U001 A物料 K 1[/red]
仓库2 b供应商 采购收货 JH-06002 U003 C物料 K 10
仓库2 b供应商 采购收货 JH-06002 U004 D物料 PCS 20
[red]仓库2 b供应商 采购退货 TH-06002 U003 C物料 K 10 [/red]
仓库3 C供应商 采购收货 JH-0600C U005 E物料 K 10
...
附加条件:业务类型是 采购退货 的能否设置为红色。
 
一、请看以下表:
表1(进货表-top):
进货单号 进货供应商 进货仓库 .....
JH-06001 a供应商 仓库1
JH-06002 b供应商 仓库2
JH-06003 c供应商 仓库3
JH-06004 d供应商 仓库4
表2(进货表-main):
进货单号 货品编号 货品名称 业务类型 单位 进货数量 .....
JH-06001 U001 A物料 采购收货 K 10
JH-06001 U002 B物料 采购收货 pcs 15
JH-06002 U003 C物料 采购收货 K 10
JH-06002 U004 D物料 采购收货 PCS 20
JH-06003 U005 E物料 采购收货 K 10
JH-06004 U006 F物料 采购收货 PCS 20
JH-06004 U007 G物料 采购收货 PCS 20
表3(退货表-top):
退货单号 退货供应商 退货仓库 .....
TH-06001 a供应商 仓库1
TH-06002 b供应商 仓库2
TH-06003 c供应商 仓库3
TH-06004 d供应商 仓库4
表4(退货表-main):
退货单号 货品编号 货品名称 业务类型 单位 退货数量 .....
TH-06001 U001 A物料 采购退货 K 1
TH-06002 U003 C物料 采购退货 K 1
TH-06003 U005 E物料 采购退货 K 1
TH-06004 U006 F物料 采购退货 PCS 2
TH-06004 U007 G物料 采购退货 PCS 2
二、我要这样的一个结果:
仓库名称 供应商名称 业务类型 单号 货品编号 货品名称 单位 数量
仓库1 a供应商 采购收货 JH-06001 U001 A物料 K 10
仓库1 a供应商 采购收货 JH-06001 U002 B物料 PCS 15
仓库1 a供应商 采购退货 TH-06001 U001 A物料 K 1
仓库2 b供应商 采购收货 JH-06002 U003 C物料 K 10
仓库2 b供应商 采购收货 JH-06002 U004 D物料 PCS 20
仓库2 b供应商 采购退货 TH-06002 U003 C物料 K 10
仓库3 C供应商 采购收货 JH-0600C U005 E物料 K 10
...
附加条件:业务类型是 采购退货 的能否设置为红色字体。
 
似乎缺表(或许楼主没列出来?)
设置关联:
仓库-》供应商(表二->表一)-》->业务类型->单号->货号->单位->数量
颜色在显示的时候设置

好久不写代码了,自己试验着写八
 
还是请高手帮忙,还是搞不定.TKS1
 
没缺表。
 
俺不是 高手,不过表设置的的确看着不太合理
帮你顶着 关注 学习
 
小儿科,懒得想.用连接查询.
 
select 仓库名称, 供应商名称 , 业务类型, 单号, 货品编号, 货品名称, 单位,数量 from (select a.进货单号 as 单号,货品编号,货品名称, 业务类型 ,单位, 进货数量 ,进货供应商 as 供应商名称, 进货仓库 as 仓库名称 from 进货表-main a,进货表-top b where a.进货单号=b.进货单号 group by a.进货单号,货品编号,货品名称, 业务类型 ,单位, 进货供应商, 进货仓库 )
union
select 仓库名称, 供应商名称 , 业务类型, 单号, 货品编号, 货品名称, 单位,数量 from (select a.退货单号 as 单号,货品编号,货品名称, 业务类型 ,单位, 退货数量 ,退货供应商 as 供应商名称, 退货仓库 as 仓库名称 from 退货表-main a,退货表-top b where a.退货单号=b.退货单号 group by a.退货单号,货品编号,货品名称, 业务类型 ,单位, 退货供应商, 退货仓库 )
 
我到是做过服装ERP,特别是物料部分,以我的经验,这种SQL语句不写也罢,纯粹偷懒,数据量大的时候你也要考虑速度和灵活性呀(比如排序,增加识别字段),实在要用,楼上的就不错,就解决你的颜色吧:
procedure TForm4.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect;
DataCol: Integer;
Column: TColumnEh;
State: TGridDrawState);
begin
if Uppercase(Trim(ADOQuery1.FieldByName('结论').AsString))='NG' then
DBGridEh1.Canvas.Font.Color := clRed;
DBGridEh1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
 
我按照zywcd的代码运行出现以下错误:
服务器: 消息 156,级别 15,状态 1,行 1
在关键字 'union' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 3
第 3 行: ')' 附近有语法错误。
请高手解释一下。
 
能否把你想要的结果描述一下,好像看的不是很清楚。
 
select 仓库名称, 供应商名称 , 业务类型, 单号, 货品编号, 货品名称, 单位,数量 from (select a.进货单号 as 单号,货品编号,货品名称, 业务类型 ,单位, 进货数量 ,进货供应商 as 供应商名称, 进货仓库 as 仓库名称 from 进货表-main a,进货表-top b where a.进货单号=b.进货单号 group by a.进货单号,货品编号,货品名称, 业务类型 ,单位, 进货供应商, 进货仓库 ) g
union
select 仓库名称, 供应商名称 , 业务类型, 单号, 货品编号, 货品名称, 单位,数量 from (select a.退货单号 as 单号,货品编号,货品名称, 业务类型 ,单位, 退货数量 ,退货供应商 as 供应商名称, 退货仓库 as 仓库名称 from 退货表-main a,退货表-top b where a.退货单号=b.退货单号 group by a.退货单号,货品编号,货品名称, 业务类型 ,单位, 退货供应商, 退货仓库 ) h
这个代码我是没法测试的。你应该自己测试,这样给你代码只是一种方法,不可能帮你完整测试。
 
select 仓库名称,供应商名称,业务类型,TB2.单号,货品编号,货品名称,单位,数量
from (
(select 仓库名称,供应商名称,进货单号 as 单号 from 表1
union
select 仓库名称,供应商名称,退货单号 as 单号 from 表3
) as TB1
left join
(select 业务类型,进货单号 as 单号,货品编号,货品名称,单位,进货数量 as 数量 from 表2
union
select 业务类型,退货单号 as 单号,货品编号,货品名称,单位,退货数量 as 数量 from 表4
) as TB2
on TB1.单号=TB2.单号
)
颜色问题在SQLserver中不好判断,如果你在报表中去判断那就很容易啦
 
高手就是高手,与众不同。
问题OK。谢谢各位!
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
851
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部