查询时提示"已超时"怎么办哪?

tong0302 2005-06-14 07:43:38
查询语句:
SELECT 路线名称, CONVERT(numeric(9, 1), CONVERT(numeric(9, 1), COUNT(流水号)) / 2)
AS 班次, isnull(SUM(票数), 0) + isnull
((SELECT SUM(人次)
FROM 定点售票
WHERE 定点售票.路线名称 = 车辆行驶记录_v.路线名称 AND
日期 >= '2005-05-01' AND 日期 <= '2005-05-07'), 0) AS 人数,
isnull(SUM(营收), 0) + isnull
((SELECT SUM(金额)
FROM 定点售票
WHERE 定点售票.路线名称 = 车辆行驶记录_v.路线名称 AND
日期 >= '2005-05-01' AND 日期 <= '2005-05-07'), 0) AS 金额
FROM 车辆行驶记录_v
WHERE 日期 >= '2005-05-01' AND 日期 <= '2005-05-07'
GROUP BY 路线名称
UNION ALL
SELECT '其它收入' AS 路线名称, NULL, NULL, SUM(金额) AS 金额
FROM 其它收入
WHERE 日期 >= '2005-05-01' AND 日期 <= '2005-05-07'
UNION ALL
SELECT '总计' AS 路线名称, SUM(班次) AS 班次, SUM(人数) AS 人数, SUM(金额)
AS 金额
FROM (SELECT 路线名称, CONVERT(numeric(9, 1), CONVERT(numeric(9, 1),
COUNT(流水号)) / 2) AS 班次, isnull(SUM(票数), 0) + isnull
((SELECT SUM(人次)
FROM 定点售票
WHERE 定点售票.路线名称 = 车辆行驶记录_v.路线名称 AND
日期 >= '2005-05-01' AND 日期 <= '2005-05-07'), 0) AS 人数,
isnull(SUM(营收), 0) + isnull
((SELECT SUM(金额)
FROM 定点售票
WHERE 定点售票.路线名称 = 车辆行驶记录_v.路线名称 AND
日期 >= '2005-05-01' AND 日期 <= '2005-05-07'), 0) AS 金额
FROM 车辆行驶记录_v
WHERE 日期 >= '2005-05-01' AND 日期 <= '2005-05-07'
GROUP BY 路线名称
UNION ALL
SELECT '其它收入' AS 路线名称, NULL, NULL, SUM(金额) AS 金额
FROM 其它收入
WHERE 日期 >= '2005-05-01' AND 日期 <= '2005-05-07') M

有时可以,有时不行,数据量大概有10条记录,是不是应为用了太多的联合语句还是别的什么原因呢?各位帮忙看看,多谢了!!!
...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
haipingma 2005-06-14
  • 打赏
  • 举报
回复
最好用關聯來做,你嵌套得條件太多,大大增加SQL得運算速度
日期 >= '2005-05-01' AND 日期 <= '2005-05-07'多次出現,
或者您把表結構跟你得要求寫出來
nixnybf69 2005-06-14
  • 打赏
  • 举报
回复
太复杂,看不懂!
如果你的查询需要写得这么复杂才能查到你想要的结果,那么我个人认为你的数据库设计不是很理想。
Andy__Huang 2005-06-14
  • 打赏
  • 举报
回复
cn.CommandTimeout =2000 '這行設置查詢最長時間

你沒有設置這行的

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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