表 A 表 B
tb A 中有 GPDM ZWMC SSD NBBM
tb B 中有 NBBM QSR (日期型)需要查询出 A表中 ZWMC 相同 而在 B 表中 QSR 不同的记录
如 A 有以下记录
10000 05华能01 上 1
20000 05华能01 下 2
30000 02华能01 上 3
40000 02华能01 下 4
B 表中 有以下记录
1 2011-01-01
2 2011-01-01
3 2010-01-01
4 2010-01-02则 查出的结果 是
30000 02华能01 2010-01-01
40000 02华能01 2010-01-02
tb A 中有 GPDM ZWMC SSD NBBM
tb B 中有 NBBM QSR (日期型)需要查询出 A表中 ZWMC 相同 而在 B 表中 QSR 不同的记录
如 A 有以下记录
10000 05华能01 上 1
20000 05华能01 下 2
30000 02华能01 上 3
40000 02华能01 下 4
B 表中 有以下记录
1 2011-01-01
2 2011-01-01
3 2010-01-01
4 2010-01-02则 查出的结果 是
30000 02华能01 2010-01-01
40000 02华能01 2010-01-02
解决方案 »
- 不知咋描述,算是行列转换?
- 使用order by unicode(列)方法排序的问题
- 求每个部门中薪水最高的前两名雇员
- MyBase如何设置字体颜色,能不能默认一种语言的,例如CSDN这样可以根据语言来自定义
- 请教这数据库是那里的问题呢?附加不上去~~
- 汇总是按select...查出的记录顺序来依次对记录汇总吗?能否按照指定的顺序汇总呢?
- 把在MS-SQL SERVER2000个人版上开发的数据库转移到MS-SQL SERVER2000企业版上,该数据库不能正常使用,请问是何原因?要如何解决?谢谢
- 一个简单的问题!!!(pb新手)
- 如何用VB将SQL SERVER 中的一个表导出到一个新的.DBF文件中
- 请问 X和Y可以分别作变量吧
- 联合查询,迷糊
- //-------------对索引的一点疑惑---------------------
declare @tbA table (GPDM int,ZWMC varchar(8),SSD varchar(2),NBBM int)
insert into @tbA
select 10000,'05华能01','上',1 union all
select 20000,'05华能01','下',2 union all
select 30000,'02华能01','上',3 union all
select 40000,'02华能01','下',4declare @tbB table (NBBM int,QSR datetime)
insert into @tbB
select 1,'2011-01-01' union all
select 2,'2011-01-01' union all
select 3,'2010-01-01' union all
select 4,'2010-01-02'select GPDM=max(GPDM),ZWMC,QSR=
convert(varchar(10),QSR,120) from @tbA a left join
@tbB b on a.NBBM=b.NBBM group by ZWMC,QSR
having(count(*)=1)
/*
GPDM ZWMC QSR
----------- -------- ----------
30000 02华能01 2010-01-01
40000 02华能01 2010-01-02
*/
就是说如果A表中只有一条的话,不出现重复的,就不取出来?
declare @tbA table (GPDM int,ZWMC varchar(8),SSD varchar(2),NBBM int)
insert into @tbA
select 10000,'05华能01','上',1 union all
select 20000,'05华能01','下',2 union all
select 30000,'02华能01','上',3 union all
select 40000,'02华能01','下',4 union all
select 50000,'07华能01','上',5 union all
select 60000,'08华能01','下',6 declare @tbB table (NBBM int,QSR datetime)
insert into @tbB
select 1,'2011-01-01' union all
select 2,'2011-01-01' union all
select 3,'2010-01-01' union all
select 4,'2010-01-02' union all
select 5,'2010-12-31' union all
select 6,'2010-12-31'select GPDM=max(GPDM),a.ZWMC,QSR=convert(varchar(10),c.QSR,120)
from @tbA a left join (
select ZWMC from @tbA group by ZWMC having(count(1)>1)
) b on a.ZWMC=b.ZWMC
left join @tbB c on a.NBBM=c.NBBM
where b.ZWMC is not null
group by a.ZWMC,c.QSR having(count(*)=1)/*
GPDM ZWMC QSR
----------- -------- ----------
30000 02华能01 2010-01-01
40000 02华能01 2010-01-02
*/