我的表名为dbo.EmpInfo,有4列
1-UserId 2-SubUserId 3-Year 4-Status
我有另一个表(在其他数据库中)名称dbo.EmpInfo1有4列
1-UserId 2-SubUserId 3-Year 4-Status
UserId可能在两个表中重复..
现在我必须从状态=“成功”的两个表中找到那些UserId,并且这个状态计数是< 10并在Gridview中绑定这些值..
对于前 - 我有一个UserId说mayank@gmail.com和dbo.EmpInfo它有状态count = 5(Status =“Success”)而在dbo.EmpInfo1它有状态count = 7所以从两个表中mayank@gmail.com的总数是12,所以我们必须在Gridview中绑定这个userId。和Gridview具有以上所有列..
我有一个程序 -
ALTER proc [dbo].[sp_countUserDetails]
as
begin try
begin transaction
Select distinct(UserId) from EmpInfo where Status='Success'
union all
Select distinct(UserId) from MyDB.dbo.EmpInfo1 where Status='Sucess'
commit transaction
end try
在我使用的.cs文件中
SqlDataReader dr = ms.sp_SelectExecuter("sp_countUserDetails");
DataTable dt = new DataTable();
dt.Load(dr);
foreach (DataRow DR in dt.Rows)
{
ms = new MethodStore();
ms.sp_SelectExecuter("sp_usercount", "@userid", (DR["UserId"]).ToString());
}
,程序是 -
ALTER Procedure [dbo].[sp_usercount]
@userid varchar(50)
as
declare @count1213 dec =0, @count1314 dec =0;
begin try
begin transaction
select @count1314= count(UserId) from EmpInfo where Status='Status' and UserID=@userid;
select @count1213= count(UserId) from MyDB.dbo.EmpInfo1 where Status='Success' and UserID=@userid;
select @count1213+@count1314 as 'Count'
if((@count1213+@count1314)>=10)
insert into MyTaxCafe.dbo.demo values (@userid);
commit transaction
end try
表dbo.demo不包含不同的UserId ...因为我们的程序
[dbo].[sp_countUserDetails]
从两个表中给出不同的值,但是由于Union,我们可以控制它的冗余,因为在两个表中可能存在相同的UserId
答案 0 :(得分:0)
首先你需要一个SQL来查询两个数据库,你可以这样试试
SELECT Status FROM [database1].[dbo].[TableName] AS t1 INNER JOIN [database2].[dbo].[TableName] AS t2
ON (t1.UserId = t2.UserId)
WHERE Status='Success'
GROUP BY Status
Having COUNT(Status) < 10
在您的C#代码中,使用SqlDataAdapter填充DataTable, 然后设置DataGridView的字段DataSource = DataTable
答案 1 :(得分:0)
您必须使用查询中的union来获得预期结果。 您的列在两个表中都是相同的,因此您可以使用union而无需任何更改 例如
select * (select * from TableName1
where Status = 'Success'
union
select * from TableName2
where Status = 'Success'
) A
where count(Status)<10
group by SubUserId, Year, Status
试试这个。