我收到了每次都可以检查和传递的项目列表。 所选项目将被移动到包含这些选中项目的字符串列表中。MVC:创建动态组的最佳方式通过
我想学习的方式,这将帮助我建立通过那些列要求组查询choosen,例如,如果我检查“OperatorTypeName”和“公司名称”生病接收与查询:
SELECT OperatorTypeName AS Group1, Company.CompanyName AS Group2, SUM(Adv.Price)
AS SumPrice
FROM Adv (nolock)
INNER JOIN Program (nolock)
ON Adv.ProgramID = Program.ProgramID
INNER JOIN Operator (nolock)
ON Program.OperatorID = Operator.OperatorID
INNER JOIN OperatorType (nolock)
ON Operator.OperatorTypeID = OperatorType.OperatorTypeID
INNER JOIN CampaignVersion (nolock)
ON Adv.CampaignVersionID = CampaignVersion.CampaignVersionID
INNER JOIN Campaign ON CampaignVersion.CampaignID = Campaign.CampaignID
INNER JOIN Campaign2Product (nolock)
ON Campaign.CampaignID = Campaign2Product.CampaignID
INNER JOIN Product2Company (nolock)
ON Product2Company.ProductID = Campaign2Product.ProductID
INNER JOIN Product2SubBranch (nolock)
ON Product2SubBranch.ProductID = Campaign2Product.ProductID
INNER JOIN SubBranch (nolock)
ON SubBranch.SubBranchID = Product2SubBranch.SubBranchID
INNER JOIN Branch (nolock)
ON SubBranch.BranchID = Branch.BranchID
INNER JOIN Company (nolock)
ON Product2Company.CompanyID = Company.CompanyID
INNER JOIN Company Manager (nolock) on Campaign.Manager =Manager.CompanyID
WHERE (Adv.TransmitDate >= getdate()-7)
GROUP BY OperatorTypeName , Company.CompanyName
而如果只是“OperatorTypeName”会被检查,生病得到适当的查询这个条件:
SELECT OperatorTypeName AS Group1, SUM(Adv.Price) AS SumPrice
FROM Adv (nolock)
INNER JOIN Program (nolock)
ON Adv.ProgramID = Program.ProgramID
INNER JOIN Operator (nolock)
ON Program.OperatorID = Operator.OperatorID
INNER JOIN OperatorType (nolock)
ON Operator.OperatorTypeID = OperatorType.OperatorTypeID
INNER JOIN CampaignVersion (nolock)
ON Adv.CampaignVersionID = CampaignVersion.CampaignVersionID
INNER JOIN Campaign
ON CampaignVersion.CampaignID = Campaign.CampaignID
INNER JOIN Campaign2Product (nolock)
ON Campaign.CampaignID = Campaign2Product.CampaignID
INNER JOIN Product2Company (nolock)
ON Product2Company.ProductID = Campaign2Product.ProductID
INNER JOIN Product2SubBranch (nolock)
ON Product2SubBranch.ProductID = Campaign2Product.ProductID
INNER JOIN SubBranch (nolock)
ON SubBranch.SubBranchID = Product2SubBranch.SubBranchID
INNER JOIN Branch (nolock)
ON SubBranch.BranchID = Branch.BranchID
INNER JOIN Company (nolock)
ON Product2Company.CompanyID = Company.CompanyID
INNER JOIN Company Manager (nolock) on Campaign.Manager =Manager.CompanyID
WHERE (Adv.TransmitDate >= getdate()-7)
GROUP BY OperatorTypeName
我不希望创建为每一个条件的每一个查询,是因为我对30个可能的列,我可以创造一个与...一起。 我可能想每次有一个比上一个更大的查询时调用sql,但是如果我已经加载了像10列,并且比我在下一个搜索中只加载了其中的2个,生病会从会话查询中对它进行分组,但让我们从基础开始,我怎样才能让它在没有多个案例的情况下工作来手动创建每个查询?
你贴上去的SQL语句。您是否要求将其转换为Linq,或者您想要T-SQL解决方案还是其他? – qujck 2013-03-05 09:03:27
我不需要将语句转换为Linq。 这些语句只是为了举例,我需要一种以动态的方式按几列进行分组的方式,他们可以调用存储过程,将查询保存到表或视图中,无关紧要。只需要知道是否有可能做到这一点,或者生病必须为可分组列的每个可能的scenerio链接一个大型的500+切换器? – JBntis 2013-03-05 10:19:56
这不是很漂亮,但请参阅http://stackoverflow.com/questions/3929041/dynamic-linq-groupby-multiple-columns – 2013-03-05 11:08:39