如何从另一个能够存储的表名中进行选择。
以下是该方案的摘要。
表1:item(itemid,itemname)
表2:类别(catid,itemid)
表3:catid(时间,费率)
正如您所看到的,这里的问题是第三个表的名称 存储在第二个表中。鉴于我将使用此查询 powershell,关于如何使用或不使用powershell编写此查询的任何提示 欢迎。
注意:没有办法重组设计,设计还可以。例如
table {
border-collapse: collapse;
}
table, td, th {
border: 1px solid black;
}

<table border="1" width="50%">
<tr>
<td colspan=2><b>item</b></td>
</tr>
<tr>
<td>itemid</td>
<td>itemname</td>
</tr>
<tr>
<td>it01</td>
<td>itemA</td>
</tr>
<tr>
<td>it02</td>
<td>itemB</td>
</tr>
<tr>
<td>it03</td>
<td>itemC</td>
</tr>
</table>
<br/>
<table border="1" width="50%">
<tr>
<td colspan=2><b>Category</b></td>
</tr>
<tr>
<td>catid</td>
<td>itemid</td>
</tr>
<tr>
<td>cat01</td>
<td>it01</td>
</tr>
<tr>
<td>cat02</td>
<td>it02</td>
</tr>
<tr>
<td>cat03</td>
<td>it03</td>
</tr>
</table>
<br/>
<table border="1" width="50%">
<tr>
<td colspan=2><b>cat01</b></td>
</tr>
<tr>
<td>time</td>
<td>rate</td>
</tr>
<tr>
<td>1</td>
<td>11</td>
</tr>
<tr>
<td>2</td>
<td>21</td>
</tr>
</table>
<br/>
<table border="1" width="50%">
<tr>
<td colspan=2><b>cat02</b></td>
</tr>
<tr>
<td>time</td>
<td>rate</td>
</tr>
<tr>
<td>1</td>
<td>12</td>
</tr>
<tr>
<td>2</td>
<td>22</td>
</tr>
</table>
<br/>
<table border="1" width="50%">
<tr>
<td colspan=2><b>cat03</b></td>
</tr>
<tr>
<td>time</td>
<td>rate</td>
</tr>
<tr>
<td>1</td>
<td>13</td>
</tr>
<tr>
<td>2</td>
<td>23</td>
</tr>
</table>
<br/>
<table border="1" width="50%">
<tr>
<td colspan=4><b>Output</b></td>
</tr>
<tr>
<td>time</td>
<td>itemA</td>
<td>itemB</td>
<td>itemC</td>
</tr>
<tr>
<td>1</td>
<td>11</td>
<td>12</td>
<td>13</td>
</tr>
<tr>
<td>2</td>
<td>21</td>
<td>22</td>
<td>23</td>
</tr>
</table>
&#13;
答案 0 :(得分:1)
您可以使用动态T-SQL:
DECLARE @TableName NVARCHAR(50)
SELECT @TableName = catid FROM category WHERE itemID = [Some Item ID here]
DECLARE @Query NVARCHAR(MAX)
SET @Query = 'SELECT * FROM ' + @TableName
EXEC sp_executesql @Query
对于旧版本的SQL Server,您可以将最后一行更改为 EXEC @Query
这至少应该指向正确的方向。