所以,我试图弄清楚如何(如果可能的话)返回只有2列的结果集,其行与给定表名中的列数成正比,而不使用动态SQL函数: EXEC
实施例。我有桌子'tblA':
CREATE TABLE [dbo].[tblA](
[ColumnA] [varchar](20) NOT NULL,
[ColumnB] [varchar](20) NOT NULL,
[ColumnC] [varchar](20) NOT NULL
)
我有很多人
CREATE TABLE [dbo].[tblB](
[Column1] [varchar](20) NOT NULL,
[Column2] [varchar](20) NOT NULL
)
我可以通过运行来找到列:
SELECT c.name From sys.columns c inner join sys.tables t on c.object_id = t.object_id Where t.name = 'tablename'
我最终想要返回一个包含2列的表,其列数等于我查询的表名中的列数。例如,
SELECT ColumnA, ColumnB, ColumnC FROM tblA WHERE ColumnA = ???
最终会被插入表格中:
TABLE [dbo].[ResultTable](
[ColumnName] [varchar](max) NOT NULL,
[ColumnValue] [varchar](max) NOT NULL
)
那么sp返回的内容有点像:
----------------------------
| ColumnName | ColumnValue |
----------------------------
| ColumnA | Hello |
----------------------------
| ColumnB | World |
----------------------------
| ColumnC | Fubar |
----------------------------
但是使用tblB会给你
----------------------------
| ColumnName | ColumnValue |
----------------------------
| Column1 | ABCDE |
----------------------------
| Column2 | 12345 |
----------------------------
如果tblA有X列,那么返回的集合将有X行,但仍然有两列。我知道这可以通过使用 exec 函数来完成,但不知道是否可以不使用它?
答案 0 :(得分:1)
def reverse(list, number):
for i in range (0,length(my_list)-1):
for num in number:
if num == number:
new_list.append(my_list[i-num])
return new_list