以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]SQL取自己表的列不重复数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=144532) |
-- 作者:2900819580 -- 发布时间:2019/12/23 20:27:00 -- [求助]SQL取自己表的列不重复数据 Dim cmd As new SQLCommand
老师,以上红色这段代码要怎么样修改才能用
想实现的目标,在订单表视图里找到物料内码历史上的曾经下过的订单。 [此贴子已经被作者于2019/12/23 20:29:05编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/12/23 20:32:00 -- 如果取不重复单号这样就可以:Sel ect DISTINCT 排产单号 from {订单表视图} where 排产单号 is not null 如果还要取其它数据,假设有2行重复的单号,取哪个单号的数据?这个视图数据是怎么样的?截图看看
|
-- 作者:2900819580 -- 发布时间:2019/12/23 20:40:00 --
老师,数据如上所示,我想实现的内容是,接到新的订单,在订单视图表里找相同的物料内码,并且将它显示在旧单单号上。 |
-- 作者:程序猿 -- 发布时间:2019/12/23 20:49:00 -- 是想以数据组的方式显示 ,还是怎么显示,如:xxx,xxx,xxx在单元格上显示 ? |
-- 作者:有点蓝 -- 发布时间:2019/12/23 20:50:00 -- 试试,如果不行导出部分数据测试 "Select b.*,(Select \',\' + 排产单号 from {订单表视图} as a where a.物料内码 = b.物料内码 and a.排产单号 is not null for xml path(\'\')) as 旧单单号"
|
-- 作者:2900819580 -- 发布时间:2019/12/23 21:25:00 -- 以下是引用有点蓝在2019/12/23 20:50:00的发言:
试试,如果不行导出部分数据测试 "Select b.*,(Select \',\' + 排产单号 from {订单表视图} as a where a.物料内码 = b.物料内码 and a.排产单号 is not null for xml path(\'\')) as 旧单单号"
老师,可以正常显示,但不明白原理,能说明一下,或给个学习的网页连接,谢谢
另外,数据加载比较慢。速度有没有办法优化一下,测试的数据只有294行,如果再多可能就会有假死的状态了。
此主题相关图片如下:无标题1.png |
-- 作者:2900819580 -- 发布时间:2019/12/24 10:58:00 -- 顶一下 |
-- 作者:有点蓝 -- 发布时间:2019/12/24 11:05:00 -- 百度“for xml path” 加载慢,一般是表达式计算,或者是事件代码影响了:http://www.foxtable.com/webhelp/topics/1935.htm,http://www.foxtable.com/webhelp/topics/2218.htm
|
-- 作者:2900819580 -- 发布时间:2019/12/24 11:32:00 -- Dim cmd As new SQLCommand
以上代码10秒,以下代码2.7秒,没有事件,目前加载294条就10秒多了。
Dim cmd As new SQLCommand |
-- 作者:有点蓝 -- 发布时间:2019/12/24 11:37:00 -- for xml path这种用法确实比较慢,虽然最后得出294条,但是却需要从这个视图里涉及到的表的所有数据里去查询,拼接得到这294条记录,这个过程慢,这些表数据越多就越慢。 或者把这些表的数据发上来测试一下看看有没有其它方法
|