如何把这两个SQL合为一个,他们有一个相关联的ID,内联好像不行?

Datatable 2005-07-12 10:59:36
SELECT FLOWID, DOCCAPTION, SENDDATE FROM TAB1 WHERE UID='323'

/* FLOWID 与 DOC_ID 相同 !!!!!!!!!!*/
SELECT
CASE

WHEN COUNT(*) >0 THEN '有'
WHEN COUNT(*) =0 THEN'没有'
WHEN COUNT(*) <0 THEN '出错'
END AS LDPS
FROM TAB2 WHERE DOC_ID=''
/* 两个SQL语句连接成一个 返回相应的值 用CASE 和 COUNT(*) 好像没法再做内联了。*/
/* 不用存储过程,不声明变量,不用视图 如何能把这两个表关联起来呢?*/
/* 返回 FLOWID DOCCAPTION SENDDATE LDPS 这四个列就正确了。*/
...全文
145 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Datatable 2005-07-12
  • 打赏
  • 举报
回复
我上面写错了。
/* FLOWID 与 DOC_ID 相同 !!!!!!!!!!*/
SELECT
CASE

WHEN COUNT(*) >0 THEN '有'
WHEN COUNT(*) =0 THEN'没有'
WHEN COUNT(*) <0 THEN '出错'
END AS LDPS
FROM TAB2 WHERE ROLE='开始' //应该是这样,

楼上给的SQL语句我运行时提示我 DOC_ID 列名无效。 而且我把WHERE去掉后,再列中并没有看见列名LDPS
paoluo 2005-07-12
  • 打赏
  • 举报
回复
楼主,试试这个。


SELECT A.FLOWID,A.DOCCAPTION,A.SENDDATE,B.LDPS FROM
(SELECT FLOWID, DOCCAPTION, SENDDATE FROM TAB1 WHERE UID='323' )A
INNER JOIN
(SELECT DOC_ID,
CASE

WHEN COUNT(*) >0 THEN '有'
WHEN COUNT(*) =0 THEN'没有'
WHEN COUNT(*) <0 THEN '出错'
END AS LDPS
FROM TAB2 WHERE DOC_ID=''
) B
On A.FLOWID=B.DOC_ID
wzh1215 2005-07-12
  • 打赏
  • 举报
回复
--只有两种情况“有”或“没有”,没有“出错”的情况!
select a.FLOWID,a.DOCCAPTION,a.SENDDATE,LDPS=max(case when b.Flowid is null then '没有' else '有' end)
from TAB1 a left join TAB2 b on a.DOC_ID=b.FLOWID
group by FLOWID,DOCCAPTION,SENDDATE
paoluo 2005-07-12
  • 打赏
  • 举报
回复
晕,说的是一楼。
paoluo 2005-07-12
  • 打赏
  • 举报
回复
楼上的语句,应该是错误的。

FLOWID是TAB1 的一个字段,DOC_ID是TAB2的一个字段的。
子陌红尘 2005-07-12
  • 打赏
  • 举报
回复
SELECT
a.FLOWID,
a.DOCCAPTION,
a.SENDDATE,
LDPS = (CASE WHEN b.LDPS > 0 THEN '有' WHEN b.LDPS > 0 THEN '没有' ELSE '出错' END)
FROM
TAB1 a
LEFT JOIN
(SELECT DOC_ID,LDPS=COUNT(*) FROM TAB2 WHERE b.DOC_ID='') b
ON
a.FLOWID = b.DOC_ID
WHERE
a.UID='323'
zlp321002 2005-07-12
  • 打赏
  • 举报
回复
--try
select FLOWID,DOCCAPTION,SENDDATE,LDPS
from (SELECT FLOWID, DOCCAPTION, SENDDATE FROM TAB1 WHERE UID='323') A,
(SELECT
CASE

WHEN COUNT(*) >0 THEN '有'
WHEN COUNT(*) =0 THEN'没有'
WHEN COUNT(*) <0 THEN '出错'
END AS LDPS
FROM TAB2 WHERE DOC_ID='' ) B
where A.DOC_ID=FLOWID
PHDYCN 2005-07-12
  • 打赏
  • 举报
回复
up
jixiaojie 2005-07-12
  • 打赏
  • 举报
回复
up
paoluo 2005-07-12
  • 打赏
  • 举报
回复
哦,不好意思,没考虑到这个问题。

那试试这个

SELECT A.FLOWID,A.DOCCAPTION,A.SENDDATE,B.LDPS FROM
(SELECT FLOWID, DOCCAPTION, SENDDATE FROM TAB1 WHERE UID='323' )A
INNER JOIN
(SELECT DOC_ID,
CASE

WHEN COUNT(*) >0 THEN '有'
WHEN COUNT(*) =0 THEN'没有'
END AS LDPS
FROM TAB2 WHERE DOC_ID=''
Group By DOC_ID
) B
On A.FLOWID=B.DOC_ID
Datatable 2005-07-12
  • 打赏
  • 举报
回复
zlp321002(职业-->烧人民币) 运行后提示 DOC_ID列名不存在。
paoluo(一天到晚游泳的鱼) 运行后提示在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
libin_ftsafe(子陌红尘) 与 paoluo(一天到晚游泳的鱼) 错误基本相同。

很感谢大家帮忙,可能是我表述不清的问题吧? 希望大家能继续帮忙。
Datatable 2005-07-12
  • 打赏
  • 举报
回复
大家好像忽略了
SELECT DOC_ID,
CASE

WHEN COUNT(*) >0 THEN '有'
WHEN COUNT(*) =0 THEN'没有'
END AS LDPS
FROM TAB2 WHERE DOC_ID='' 这句中的 DOC_ID=''
不一定是内联或者外联什么的我只是说他们有关系 FLOWID 和 DOC_ID 是一个。
我是想根据条件从第一个SQL语句中取出FLOWID,第二个语句的WHERE DOC_ID= 就是第一个SQL语句取出的FLWOID .
zlp321002 2005-07-12
  • 打赏
  • 举报
回复
--晕,这也被你发现了!呵呵。
select FLOWID,DOCCAPTION,SENDDATE,LDPS
from (SELECT FLOWID, DOCCAPTION, SENDDATE FROM TAB1 WHERE UID='323') A,
(SELECT
CASE

WHEN COUNT(*) >0 THEN '有'
WHEN COUNT(*) =0 THEN'没有'
WHEN COUNT(*) <0 THEN '出错'
END AS LDPS
FROM TAB2 WHERE DOC_ID='' ) B
where A.DOC_ID=B.FLOWID --少写了一个表别明!:)

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧