小弟在下有礼了
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' 小弟不胜感激啊
建议你提供详细的资料:例如表的结构,表之间的关系,测试数据,相关算法及需要的结果。这样有助于我们理解你的意思,更主要的是能尽快让你获得答案或解决问题的方法。
[解决办法]
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' 这个错误太多了,给测试数据和结果吧,不带这么写的
[解决办法]
不带这么写的,你说出来有哪些东西,想干什么,也许会有更好的解决方法。
[解决办法]
楼主,小弟我投降了
[解决办法]
[解决办法]
支持楼主--精神
[解决办法]
;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
[解决办法]
--就是个多表查询,如果用户表有2个,可以类似这种的联合查询select id,account,'外部人' AS UserType from member union allselect id,account,'内部人' from NTUser
[解决办法]
--先一部分一部分的来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改成对应的字段。