如何用SQL創建這樣的數據集?如何使用SQL從矩陣創建數據集?
a 100
b 100
b 200
c 100
c 300
d 200
d 300
從表中建立起來的這樣一個矩陣:
alfa 100 200 300
a 1 0 0
b 1 1 0
c 1 0 1
d 0 1 1
如何用SQL創建這樣的數據集?如何使用SQL從矩陣創建數據集?
a 100
b 100
b 200
c 100
c 300
d 200
d 300
從表中建立起來的這樣一個矩陣:
alfa 100 200 300
a 1 0 0
b 1 1 0
c 1 0 1
d 0 1 1
未轉印數據的最佳方法是不使用UNPIVOT功能。
如果可能,避免使用UNION可能效率極低。
'交叉應用與價值'是一個很好的方法,有很多例子在線。
我不能完全肯定這是你的意思,但讓我們從這裏開始:
CREATE TABLE matrix (
alfa CHAR(1),
[100] BIT,
[200] BIT,
[300] BIT
)
INSERT INTO matrix
SELECT 'a', 1, 0, 0
UNION
SELECT 'b', 1, 1, 0
UNION
SELECT 'c', 1, 0, 1
UNION
SELECT 'd', 0, 1, 1
SELECT * FROM matrix
DROP TABLE matrix
結果:
/------------------------\
| alfa | 100 | 200 | 300 |
|------+-----+-----+-----|
| a | 1 | 0 | 0 |
| b | 1 | 1 | 0 |
| c | 1 | 0 | 1 |
| d | 0 | 1 | 1 |
\------------------------/
請試試這個。
declare @Table table (alfa char(10), c100 Int, C200 int, c300 int)
insert into @Table values
('a', 1, 0, 0)
,('b', 1, 1, 0)
,('c', 1, 0, 1)
,('d', 0, 1, 1);
SELECT alfa, 100 as Val FROM @Table WHERE c100<>0
UNION ALL SELECT alfa, 200 as val FROM @Table WHERE C200<>0
UNION ALL SELECT alfa, 300 as val FROM @Table WHERE c300<>0
歡迎來到Stack Overflow!請查看我們的[SO問題清單](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)來幫助你提出一個好問題,從而得到一個很好的答案。 –