CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

脑袋破了,都没有想出来

楼主epsonhan()2005-12-20 17:06:08 在 MS-SQL Server / 应用实例 提问

各位大侠:  
  我有2个表,一个是销售表,一个是客户表,我现在希望把两个表连接起来:  
  人员 产品 客户 日期  
  张三 肥皂 三友 20050910  
  张三 牙刷 三友 20050911  
  张三 肥皂 翡翠 20050101  
  李四 牙刷 东西单 20050309  
   
  另外一个  
  客户 客户级别  
  三友 A  
  东西单 B  
   
  如果两个表做连接,就把客户“翡翠”给丢了。我现在希望把客户“翡翠”跟着“三友走”的级别走,即  
  人员 产品 客户 日期 客户级别  
  张三 肥皂 三友 20050910 A  
  张三 牙刷 三友 20050911 A  
  张三 肥皂 翡翠 20050101 A  
  李四 牙刷 东西单 20050309 B  
   
  可是我不知道,如果不用临时表,而就做视图或者连接,怎么可能产生这样的结果,因为这个表以后还要做汇总和统计,所以不希望做到临时表中,请各位指点。  
   
   
   
   
  问题点数:20、回复次数:6Top

1 楼lsqkeke(可可)回复于 2005-12-20 17:20:39 得分 0

你为什么不在这个表中加条记录呢?  
  客户 客户级别  
  三友 A  
  东西单 B  
  翡翠           A  
   
  Top

2 楼Jpp(不懂装懂)回复于 2005-12-20 17:39:35 得分 0

“翡翠”跟着“三友走”之间有什么联系?你总不能信口随便指定吧!  
   
  把规则想清楚。Top

3 楼epsonhan()回复于 2005-12-20 17:44:35 得分 0

TO:   lsqkeke(可可)    
  我也想在表中增加对应关系呢,其实,是因为这个翡翠的级别是随着销售额分析出来的,所以加这个关系没有用,即在每次做报表的时候,随机指定一个原则,原表要比这个复杂,但是就是把翡翠随机制定跟着某个客户的级别走。Top

4 楼lw1a2(一刀 现在改六点下班了:()回复于 2005-12-20 19:07:45 得分 10

create   table   #tab1   (ry   varchar(8)   null,cp   varchar(20)   null,kh   varchar(20)   null,rq   char(8)   null)  
   
  insert   into   #tab1   values('张三','肥皂', '三友', '20050910')  
  insert   into   #tab1   values('张三','牙刷', '三友', '20050911')  
  insert   into   #tab1   values('张三','肥皂', '翡翠', '20050101')  
  insert   into   #tab1   values('李四','牙刷', '东西单', '20050309')  
   
  create   table   #tab2   (kh   varchar(20)   null,khjb   varchar(1)   null)  
  insert   into   #tab2   values('三友', 'A')  
  insert   into   #tab2   values('东西单', 'B')  
   
  select   ry,cp,a.kh,rq,  
  (case   a.kh   when   '翡翠'   then   'A'   else   khjb   end)   as   khjb  
  from   #tab1   a,#tab2   b   where   a.kh*=b.khTop

5 楼hpym365(君子爱财,取之有道.)回复于 2005-12-20 20:24:00 得分 0

select   x.*   ,k.客户级别    
  from   销售表   x  
  left   join   客户表   k  
  on   x.客户=k.客户  
  ---result-----  
  张三 肥皂 三友 2005-09-10   00:00:00.000 A  
  张三 牙刷 三友 2005-09-11   00:00:00.000 A  
  张三 肥皂 翡翠 2005-01-01   00:00:00.000 NULL  
  李四 牙刷 东西单 2005-03-09   00:00:00.000 B  
  --估计这就是你想要的结果吧?  
  如果不是可以使用isnull函数替换一下null直为A  
  分不重要好使告诉我下哈Top

6 楼hpym365(君子爱财,取之有道.)回复于 2005-12-20 20:28:19 得分 10

select   x.*   ,  
  isnull(k.客户级别,'A')as   客户级别    
  from   销售表   x  
  left   join   客户表   k  
  on   x.客户=k.客户Top

相关问题

  • 想破脑袋的难题
  • 想破脑袋的组件访问问题
  • 我的脑袋快想破了。scanf()和getchar()变了吗?
  • 奇怪了,怎么会这样(想破脑袋也想不通)
  • Target问题,想破脑袋也想不出
  • 一个叫人想破脑袋的问题---help
  • 绝对挑战的查询,我想破脑袋了
  • 新人有问题想破了脑袋,请来帮忙.
  • 加密解密,脑袋都搞大了,大伙帮忙看看!
  • 简单的变量传递问题,我的脑袋都大了。

关键词

  • 客户
  • 连接
  • null
  • 翡翠
  • 肥皂
  • 表
  • 级别
  • 牙刷
  • kh
  • tab

得分解答快速导航

  • 帖主:epsonhan
  • lw1a2
  • hpym365

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo