读书人

小弟在下有礼了解决方案

发布时间: 2012-03-24 14:00:47 作者: rapoo

小弟在下有礼了

SQL code
SELECT pkd.ID,       Convert(varchar(10),pkl.ViewDate,111)  as ViewTime,       CONVERT(VARCHAR, pkd.InitialDate) as UploadTime,        pkd.ProductLine as ProductLine,        pkd.Model as model,       pkd.SerialNo as SerialNo,    begin        select account,        case when (account ! ='')        then            (select account from NTUser where NTUser.[ID] = pkl.viewBy) as UserAccount,             (select name from UserSite u,site s where u.siteid=s.id) as sitename,            'big' as UserType,        else            (select account from member where member.[ID] = pkl.viewBy) as UserAccount,             (select country from UserSite u,regioncountry c where u.siteid=c.siteID) as sitename,            'small' as UserType,        end        from NTUser,    end FROM pkbknowledgedetail pkd,PKBViewLog pkl WHERE Status = 'A' and pkl.KnowLedgeID = pkd.[ID] and viewBy='ASfde0ea4b-4fbf-41af-b4ae-78215f295cbf' 小弟不胜感激啊            



求大牛门帮忙看下 错误如下:


消息 156,级别 15,状态 1,第 7 行
Incorrect syntax near the keyword 'begin'.
消息 156,级别 15,状态 1,第 11 行
Incorrect syntax near the keyword 'as'.
消息 156,级别 15,状态 1,第 12 行
Incorrect syntax near the keyword 'as'.
消息 156,级别 15,状态 1,第 15 行
Incorrect syntax near the keyword 'as'.
消息 156,级别 15,状态 1,第 16 行
Incorrect syntax near the keyword 'as'.


大致表的意思说下吧 就是 传入 一个viewby,这个ViewBy在PKBViewLog里 各个关系就是根据ViewBy 可以查看KnowLedgeID 这个ID和pkbknowledgedetail的ID对应的

[解决办法]
SQL code
建议你提供详细的资料:例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。
[解决办法]
SQL code
SELECT pkd.ID,       Convert(varchar(10),pkl.ViewDate,111)  as ViewTime,       CONVERT(VARCHAR, pkd.InitialDate) as UploadTime,        pkd.ProductLine as ProductLine,        pkd.Model as model,       pkd.SerialNo as SerialNo,???从哪儿查??后面的呢?    begin        select account,        case when (account ! ='')        then            (select account from NTUser where NTUser.[ID] = pkl.viewBy) as UserAccount,             (select name from UserSite u,site s where u.siteid=s.id) as sitename,            'big' as UserType--都好多余        else            (select account from member where member.[ID] = pkl.viewBy) as UserAccount,             (select country from UserSite u,regioncountry c where u.siteid=c.siteID) as sitename,            'small' as UserType,        end        from NTUser,    end FROM pkbknowledgedetail pkd,PKBViewLog pkl WHERE Status = 'A' and pkl.KnowLedgeID = pkd.[ID] and viewBy='ASfde0ea4b-4fbf-41af-b4ae-78215f295cbf' 这个错误太多了,给测试数据和结果吧,不带这么写的
[解决办法]
不带这么写的,你说出来有哪些东西,想干什么,也许会有更好的解决方法。
[解决办法]
楼主,小弟我投降了
[解决办法]

[解决办法]
支持楼主--精神
[解决办法]
探讨

引用:
楼主,小弟我投降了



亲 我也想把数据库发出来。。。。可是这个不是我自己的项目啊。。。是公司的。。。我现在纠结啊

[解决办法]
SQL SERVER 2000?2005?2008?

SQL code
;WITH m1 AS ( SELECT  account ,  (SELECT account FROM NTUser WHERE NTUser.[ID] = pkl.viewBy) AS UserAccount ,  (SELECT name FROM UserSite u ,site s WHERE u.siteid = s.id) AS sitename ,   'big' AS UserType FROM NTUser WHERE account ! = ''   UNION ALL  SELECT  account ,  (SELECT account FROM member WHERE member.[ID] = pkl.viewBy),  (SELECT country FROM UserSite u ,regioncountry c WHERE u.siteid = c.siteID) ,  'small' AS UserType FROM NTUser WHERE account = '' OR account IS NULL),m2 AS (SELECT pkd.ID ,              CONVERT(VARCHAR(10), pkl.ViewDate, 111) AS ViewTime ,              CONVERT(VARCHAR, pkd.InitialDate) AS UploadTime ,              pkd.ProductLine AS ProductLine ,              pkd.Model AS model ,              pkd.SerialNo AS SerialNo   FROM       pkbknowledgedetail pkd ,              PKBViewLog pkl   WHERE      Status = 'A'              AND pkl.KnowLedgeID = pkd.[ID]              AND viewBy = 'ASfde0ea4b-4fbf-41af-b4ae-78215f295cbf'              )--将这两个结果集按照你的要求连接查询即可。              SELECT * FROM m1 , m2 WHERE 1 = 1 


[解决办法]

探讨

引用:
SQL SERVER 2000?2005?2008?


SQL code


;WITH m1 AS
( SELECT account ,
(SELECT account FROM NTUser WHERE NTUser.[ID] = pkl.viewBy) AS UserAccount ,
(SELECT name FROM……

[解决办法]
探讨

引用:
引用:
引用:
引用:

引用:


报出2个错误

消息 170,级别 15,状态 1,第 1 行
Line 1: Incorrect syntax near ';'.
消息 17……

[解决办法]
参考一下这个:
http://topic.csdn.net/u/20100716/19/6f132f16-20e4-418c-8dee-b99d5f86d320.html?37139
[解决办法]
1、确定你使用的是SQL SERVER 2005?
2、图上看到的字段不全,图上的数据我一个一个敲也太麻烦了
建议参考下帖给出表脚本及测试数据:
http://topic.csdn.net/u/20120314/20/0e8bec70-612a-4a8a-80f6-4a71b1fb728f.html?seed=5733669&r=77919776#r_77919776
3、根据你#21的描述,你要的是
ViewTime uplaodtime(即InitialDate),productLine,meodel,SerialNo, sitename,UserType
一共7个字段?7个字段需要7个表?一个表取一个字段?
[解决办法]
SQL code
--就是个多表查询,如果用户表有2个,可以类似这种的联合查询select id,account,'外部人' AS UserType from member  union allselect id,account,'内部人' from NTUser
[解决办法]
SQL code
--先一部分一部分的来SELECT  pkd.ID ,        CONVERT(VARCHAR(10), pkl.ViewDate, 111) AS ViewTime ,        CONVERT(VARCHAR, pkd.InitialDate) AS UploadTime ,        pkd.ProductLine AS ProductLine ,        pkd.Model AS model ,        pkd.SerialNo AS SerialNoFROM    pkbknowledgedetail pkd ,        PKBViewLog pklWHERE   Status = 'A'        AND pkl.KnowLedgeID = pkd.[ID]        AND viewBy = 'ASfde0ea4b-4fbf-41af-b4ae-78215f295cbf'--这个运行没有问题,结果能得到你想要的6个字段?
[解决办法]
把连接查询的条件改一下

left join @NTUser b on a.id = b.id
left join @member c on a.id = c.id

你的a.id 是pkd.ID
b.id 是 NTUser.id
c.id 是 regioncountry.siteid

关系不对,故而结果不对...

你可以把插入表变量时的字段重新对应一下
或是把on后面的id改成对应的字段。

读书人网 >SQL Server

热点推荐