SQL Server:从存储的表名中选择

时间:2015-12-18 21:26:26

标签: sql-server powershell

如何从另一个能够存储的表名中进行选择。

以下是该方案的摘要。

表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;
&#13;
&#13;

1 个答案:

答案 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

这至少应该指向正确的方向。