我收到了每次都可以檢查和傳遞的項目列表。 所選項目將被移動到包含這些選中項目的字符串列表中。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