Reputation: 1975
In the below query I would like to redirect ''MyDivision_1'' (MyDivision_1 is a constant text) to a dropdown list selection.
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:dbFOConnectionString %>"
SelectCommand="/* COLUMNS HEADERS */
DECLARE @columnHeaders NVARCHAR (MAX)
SELECT @columnHeaders = COALESCE (@columnHeaders
+ ',[' + sStockistName + ']', '[' + sStockistName + ']')
FROM TblPresentStock
GROUP BY sStockistName
ORDER BY sStockistName
/* GRAND TOTAL COLUMN */
DECLARE @GrandTotalCol NVARCHAR (MAX)
SELECT @GrandTotalCol = COALESCE (@GrandTotalCol + 'ISNULL ([' +
CAST (sStockistName AS VARCHAR) +'],0) + ', 'ISNULL([' + CAST(sStockistName AS VARCHAR)+ '],0) + ')
FROM TblPresentStock
GROUP BY sStockistName
ORDER BY sStockistName
SET @GrandTotalCol = LEFT (@GrandTotalCol, LEN (@GrandTotalCol)-1)
/* GRAND TOTAL ROW */
DECLARE @GrandTotalRow NVARCHAR(MAX)
SELECT @GrandTotalRow = COALESCE(@GrandTotalRow + ',ISNULL(SUM([' +
CAST(sStockistName AS VARCHAR)+']),0)', 'ISNULL(SUM([' + CAST(sStockistName AS VARCHAR)+']),0)')
FROM TblPresentStock
GROUP BY sStockistName
ORDER BY sStockistName
----------------------------------------------
-- DROP TABLE temp_MatchesTotal
/* MAIN QUERY */
DECLARE @FinalQuery NVARCHAR (MAX)
SET @FinalQuery = 'SELECT *, (' + @GrandTotalCol + ')
AS [Grand Total] INTO #temp_MatchesTotal
FROM
(SELECT sProductName,sDivision,sStockistName,Qty
FROM TblPresentStock where sDivision = ''MyDivision_1''
)A
PIVOT
(
sum (Qty)
FOR sStockistName
IN (' +@columnHeaders + ')
) B
ORDER BY sProductName,sDivision
SELECT * FROM #temp_MatchesTotal
UNION ALL
SELECT ''Grand Total'','''','+@GrandTotalRow +',
ISNULL (SUM([Grand Total]),0) FROM #temp_MatchesTotal
DROP TABLE #temp_MatchesTotal'
-- PRINT 'Pivot Query '+@FinalQuery
-- SELECT @FinalQuery
EXECUTE(@FinalQuery)">
</asp:SqlDataSource>
The above SQL query is in an aspx page (design mode).
Any suggestion will be very much helpful.
Upvotes: 1
Views: 97
Reputation: 24957
You can use a parameter inside SELECT
query like this:
SELECT sProductName, sDivision, sStockistName, Qty FROM TblPresentStock
WHERE sDivision = @MyDivision_1
Then use parameter name with ControlParameter
inside SelectParameters
option in SqlDataSource
, by setting PropertyName="SelectedValue"
from dropdown list:
<%-- Dropdownlist example --%>
<asp:DropDownList ID="DropDownList1" runat="server" ... />
<asp:ListItem Text="SampleText" Value="SampleValue" />
...
</asp:DropDownList>
<%-- SqlDataSource --%>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:dbFOConnectionString %>"
SelectCommand="..." ...>
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1"
PropertyName="SelectedValue"
Name="MyDivision_1"
Type="String" />
</SelectParameters>
</asp:SqlDataSource>
Note: The passed type in ControlParameter
must match with type defined in SelectedValue
attribute of dropdown list.
Related issue:
How to assign DropDownList selected value to SqlDataSource?
Upvotes: 1