我不确定我做的是否正确,但我的要求是使用TSQL创建一个视图,将行显示为列。列数是固定的。行永远不会超过列数。
第2列的限值为3。第1列无限值。
目前我的SQL使用的是OFFSET AND FETCH,但它似乎总是返回总共1行。
SELECT Col1, Col2 FROM Table2 WHERE Col1 IN (SELECT Col FROM Table1) ORDER BY Col2 ASC OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY
| 表一|
| - ------|
| A类|
| 乙|
| C级|
| D级|
| 表2第1列|表2第2栏|
| - ------|- ------|
| A类|A1|
| A类|A2|
| A类|A3|
| 乙|地下一层|
| 输出列1|输出列1|输出列2|输出列3|
| - ------|- ------|- ------|- ------|
| A类|A1|A2|A3|
| 乙|地下一层|零|零|
| C级|零|零|零|
| D级|零|零|零|
谢谢你。
3条答案
按热度按时间qojgxg4l1#
就我个人而言,我会使用条件聚合,它看起来有点像这样:
vqlkdk9b2#
作为对Larnu回答的回应,[添加了表2第3列],可用于排序。抱歉,不知道它是否存在。
在使用了Larnu的答案后,我得到了下面的SQL,我认为它足够满足我的要求。非常感谢Larnu的帮助。
laximzn53#
由于列数未知(我认为SQL Server的列数限制为1000),我将使用动态SQL构建一个动态“透视”,如下所示: