请教各位DX
现在有6张表 a,b,c,d,e,f
a表
LSH (PK)
zxrq (日期)
XMBM
fphm
ksbh
ghb表
LSH (PK和a表关联)
BAH
brxmc表
LSH (pk和a表关联)
rysj (进入日期)
cysj (离开日期)d表
LSH(pk和a表关联)
zd (一个LSH可以有多个zd)
sxe 表
ygh (和A表的gh关联)
xmf 表
hm (和A表的ksbh关联)
ksmc现在要查a表2009年xmbm='123',fphm不为空,d.sx='03'且只选第一条的zd 并且按照b.bah,b.brxm,d.zd,c.rysj,c.cysj,e.xm,f.ksmc 这样的格式显示数据
现在有6张表 a,b,c,d,e,f
a表
LSH (PK)
zxrq (日期)
XMBM
fphm
ksbh
ghb表
LSH (PK和a表关联)
BAH
brxmc表
LSH (pk和a表关联)
rysj (进入日期)
cysj (离开日期)d表
LSH(pk和a表关联)
zd (一个LSH可以有多个zd)
sxe 表
ygh (和A表的gh关联)
xmf 表
hm (和A表的ksbh关联)
ksmc现在要查a表2009年xmbm='123',fphm不为空,d.sx='03'且只选第一条的zd 并且按照b.bah,b.brxm,d.zd,c.rysj,c.cysj,e.xm,f.ksmc 这样的格式显示数据
使用分析函数row_number()就行了
FROM a,
b,
c,
(SELECT *
FROM d
WHERE ROWID =
(SELECT MAX(ROWID) FROM d WHERE d.sx = '03' GROUP BY d.zd)) d,
e,
f
WHERE a.lsh = b.lsh
AND a.lsh = c.lsh
AND a.lsh = d.lsh
AND a.gh = e.ygh
AND a.ksbh = f.hm
AND a.xmbm = '123'
AND a.fphm IS NOT NULL;
FROM d
WHERE ROWID =
(SELECT MAX(ROWID) FROM d WHERE d.sx = '03' GROUP BY d.zd)) d
能不能解析一下这条语句,我用你写的语句查询,没有查到记录。d表同a表流水号相同的并且d.sx='03'时,可能有多条记录, 用select * from d where and sx='03';查出来的数据 :
lsh zd sx
1 x 03
1 xx 03
1 xxx 03
2 y 03
.. .. ..
.. .. ..
现在想在原要求下最后查出的结果 相同的lsh只需显示一条zd,而不是将所有的zd显示出来
FROM d
WHERE ROWID in (SELECT MAX(ROWID) FROM d WHERE d.sx = '03' GROUP BY d.zd)) d
把rowid “=” 换为in