我有2个表...它们基本相同,除了其中一个表中的列名,因为它们处理2个不同的名称,但是...我想要的数据是具有相同名称的列。几乎我想做的事情......是的。他们也需要与众不同所以我不算重复...我可以将它们作为单独的表格...但我不能把它们放在一起..我需要它们在1列中是因为它如何被发送到C3代码页以及它如何读取它...结构已经预先设置了..并且在这一个存储过程中有大约5个其他语句正在这样执行(我也不是那个设置它的人)。所以,如果这是可能的......请告诉我..如果您想要查看现实代码,我也会粘贴我所拥有的确切代码。我只是想简化它以使其更容易理解。 我打算发布一些图片,希望能更好地解释一下。
图像1是当前设置的内容:
顶部是存储在表格中的...底部是更多的结果 它基本上运行此代码以获得底部
DECLARE @id INT;
DECLARE @invest nvarchar(50);
SET @id = '7633';
SET @invest = '';
SELECT 'a' + CONVERT(nvarchar, orderfindings.risk_rating) AS cat, COUNT(DISTINCT orderfindings.prnt_id) AS stat
FROM orderheader, orderaudits, orderfindings
WHERE orderheader.id = orderaudits.orderheader_id AND orderaudits.ID = orderfindings.prnt_id
AND orderheader.id = @id AND orderfindings.risk_rating > 0 AND orderaudits.Investor_Name LIKE '%' + @invest + '%'
GROUP BY orderfindings.risk_rating
如果我想要代理商而不是调查结果......只需更换它......代理商和调查结果就是2个表格......它们是明显相同的专栏......但我想把结果放在一起..我试过了几个方式..但我似乎无法得到它 图2 - 底部的表格更像是我正在寻找的......它将它们组合成1:
如果订单中有发现或代理或两者兼有..那么它会被标记为1,表示该风险等级...如果没有...那么风险等级为0 ..然后将它们相加我得到了什么......任何帮助都表示赞赏..如果你不明白我会澄清我能做什么;
编辑:
我一直在用它.. ..这个http://pastebin.com/117Z2TVh ..让它显示2列..但仍然不是正确的结果...我得到a1 = 1 ... a2 = 1。 ..所以它没有贯穿所有订单......或者它需要一种方法来计算它...我在案例陈述的开头加了一笔钱...因为计数错误...所以我把数字拿出来......没有真正的工作..任何建议?
答案 0 :(得分:1)
您是否尝试过使用UNION条款?
如果您不熟悉:http://msdn.microsoft.com/en-us/library/ms180026.aspx
基本上,您编写两个查询,返回UNION两侧的两个列之一,并将它们作为最终结果集中的一列返回。如果列名不同,则在两侧使用别名,以便它们可以组合在最终的联合结果集中。
答案 1 :(得分:0)
;找到AS(选择oa.id,oa.Risk_Rating,COUNT(orf.Prnt_ID)查找次数 来自orderaudits oa LEFT JOIN orderfindings orf on oa.ID = orf.Prnt_ID --WHERE oa.risk_rating> 0和oa.Investor_Name喜欢'%' + @invest +'%' GROUP BY oa.id,oa.Risk_Rating), 代理商AS(选择oa.id,oa.Risk_Rating,COUNT(ora.Prnt_ID)agencycount 来自orderaudits oa LEFT JOIN orderagencies ora on oa.ID = ora.Prnt_ID --WHERE oa.risk_rating> 0和oa.Investor_Name喜欢'%' + @invest +'%' GROUP BY oa.id,oa.Risk_Rating) / * 选择'仅查找',oa.Risk_Rating,COUNT(oa.id)为a,SUM(如果f.findingcount> 0,则1 ELSE 0 END)为b 来自orderaudits oa LEFT JOIN找到f ON oa.id = f.id. LEFT JOIN orderheader哦 ON oh.id = oa.orderheader_id 在哪里哦.id = @id和oa.risk_rating> 0和oa.Investor_Name喜欢'%' + @invest +'%' GROUP BY oa.Risk_Rating
UNION ALL
SELECT'仅限代理商',oa.Risk_Rating,COUNT(oa.id)作为a,SUM(例如a.agencycount> 0然后1 ELSE 0 END)作为b 来自orderaudits oa LEFT JOIN Agency a ON oa.id = a.id LEFT JOIN orderheader哦 ON oh.id = oa.orderheader_id 在哪里哦.id = @id和oa.risk_rating> 0和oa.Investor_Name喜欢'%' + @invest +'%' GROUP BY oa.Risk_Rating
UNION ALL * / - 一起 SELECT' aa' +转换(nvarchar,oa.risk_rating)为cat,SUM(CASE WHEN f.findingcount> 0或a.agencycount> 0然后1 ELSE 0 END)为b 来自orderaudits oa LEFT JOIN找到f ON oa.id = f.id. LEFT JOIN Agency a ON oa.id = a.id LEFT JOIN orderheader哦 ON oh.id = oa.orderheader_id 在哪里哦.id = @id和oa.risk_rating> 0和oa.Investor_Name喜欢'%' + @invest +'%' GROUP BY oa.Risk_Rating