我的类别表中有以下数据。
当我从类别I中选择*时,我会得到这样的数据。这个表有10多列
CategoryId CategoryName c3 c4 .....c10
1 aaa
2 bbb
3 ccc
...
...
我想显示这样的数据。我不知道如何为此准备SQL。
CategoryId 1
CategoryName aaa
C3
...
...
C10
CategoryId 2
CategoryName bbb
C3
...
...
C10
CategoryId 3
CategoryName ccc
C3
...
...
C10
...
请建议我任何想法。
答案 0 :(得分:1)
你可以使用像这样的Cross Apply
来实现它 -
DECLARE @OutItem TABLE
(
CategoryId INT,
CategoryName varchar(10),
c3 varchar(10)
)
INSERT INTO @OutItem
VALUES (1,'aaa', 'c31'),
(2,'bbb', 'c32'),
(3,'ccc', 'c33')
SELECT ca.* from @OutItem
CROSS APPLY (
VALUES ('CategoryId', CAST(CategoryId AS VARCHAR)),
('CategoryName', CategoryName),
('C3', c3)
--, Add your 10 columns here same as above
) ca (TabCol, TabVal)
<强>结果强>
TabCol TabVal
===================
CategoryId 1
CategoryName aaa
C3 c31
CategoryId 2
CategoryName bbb
C3 c32