我正在研究一个随机滚轮,其中需要为一个集合滚动5个变量,然后根据每个变量打印一个字符串,但具有完全相同的条件但是彼此独立。然后输出将打印这些字符串的列表。
而不是写作:
if object_id('tempdb..#tempValuePair') is not null drop table #tempValuePair
select
'Color' as Name,
'Red' as Value
into #tempValuePair
union all
select
'Age','43'
union all
select
'Mood','Happy'
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName= ISNULL(@ColumnName + ',','')
+ QUOTENAME(Name)
FROM (SELECT DISTINCT Name FROM #tempValuePair) AS Courses
--Prepare the PIVOT query using the dynamic
SET @DynamicPivotQuery =
N'SELECT ' + @ColumnName + '
FROM #tempValuePair
PIVOT(MAX(Value)
FOR Name IN (' + @ColumnName + ')) AS PVTTable'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery
有没有办法将案例写成数组中的多个独立变量或类似的东西,所以我只需要写一次条件?如果用户不幸的话,可能会有多达4个这样的集合,并且我不希望必须写出相同的条件多达20次,因为在我的特定情况下,实际上有29个条件每个案例。
答案 0 :(得分:1)
听起来你只需要将一个逻辑封装在一个可以多次应用的方法中。你有一个简化的例子,但我会在这里提供一个稍微强大的例子,让你走上正确的思路:
tableData = [['apples','oranges','cherries','banana'],
['Alice','Bob','Carol','David'],
['dogs','cats','moose','goose']]
def printTable():
colWidths=[0]*len(tableData)
for i in range(len(tableData)):
for x in range(len(tableData[i])):
if colWidths[i]<len(tableData[i][x]):
colWidths[i]=len(tableData[i][x])
for x in range(len(tableData[i])):
print(tableData[0][x].rjust(colWidths[0]+1) + tableData[1][x].rjust(colWidths[1]+1) + tableData[2][x].rjust(colWidths[2]+1))
printTable()