在SQL Server

时间:2015-07-09 14:19:25

标签: sql-server-2008 dynamic-sql

我有一项功能,用户可以选择table(only one at a time)并根据table columns显示。用户可以选择多个列,所以我想要的是,当用户选择列时,它应该返回所选列的结果。现在按照我的表格,如果用户选择Colum_1 which has unique values,那么我将允许用户选择,但如果用户选择Column_2,我会通过说“选择其他列或多个列”来提示消息,然后在后台我将为这些选定的列创建组合。

示例:

Table name = `TestTable` 

Column_1 Column_2 Column_3
-------- -------- --------
    1        1       ab
    2        2       bc
    3        1       bc

预期结果:

Column_1 = 1 2 3
Column_1, Column_2 = 1 1, 2 2, 3 1 (combination of two columns)
Column_1, Column_2, Column_3 = 1 1 ab, 2 2 bc, 3 1 bc (combination of three columns)

我尝试了一个查询但它只对一个列名有用。我不确定用户是否选择了多个列然后如何处理它。

我的查询:

declare @colCount bigint, @uniqColCount bigint, @result nvarchar(max)

select @colCount = count(Column_1) from TestTable
select @uniqColCount = count(distinct Column_1) from TestTable

    if(@colCount = @uniqColCount)
     begin
        set @result = (select Column_1 from TestTable)
        print @result
     end
    else
        print 'false'

我需要在for-each中实现SQL种逻辑。

1 个答案:

答案 0 :(得分:0)

您可以使用While条件来解决此问题。以下是更多详细信息的参考。 https://msdn.microsoft.com/en-CA/library/ms178642.aspx