我有以下2个表:
DECLARE @table1 TABLE (
[NO] int,
A1 float,
A2 float,
A3 float,
A4 float,
A5 float,
A6 float
)
DECLARE @table2 TABLE (
KOD nvarchar(100),
ID_QUANTITY int
)
INSERT INTO @table1 VALUES
(1, 4.1, 3, 3.5, 23.5, 12.2, 2.4),
(2, 4.2, 0, 1.9, 34.5, 31.2, 34.2),
(3, 1.5, 0, 2.3, 12.3, 12.3, 1.2),
(4, 3.7, 2.1, 5.9, 4.8, 10.2, 21.2),
(5, 3.9, 2.6, 1.9, 12.3, 2.4, 10.2)
INSERT INTO @table2 VALUES
('A1', 500),
('A2', 600),
('A3', 700),
('A4', 800),
('A5', 900),
('A6', 1000)
我需要在sql中创建脚本,将第一个表中的变换值变为外观,如下所示
感谢您的帮助
答案 0 :(得分:1)
UNPIVOT然后加入,对ID
列使用ROW_NUMBER():
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) as ID,
ID_QUANTITY,
[VALUES]
FROM (
SELECT *
FROM table1
) p
UNPIVOT (
[VALUES] FOR [COL] IN (A1,A2,A3,A4,A5,A6)
) as unpvt
LEFT JOIN table2 t
ON t.KOD = unpvt.[COL]
ORDER BY ID_QUANTITY, [NO]
输出:
ID ID_QUANTITY VALUES
1 500 4,1
2 500 4,2
3 500 1,5
4 500 3,7
5 500 3,9
6 600 3
7 600 0
8 600 0
9 600 2,1
10 600 2,6
...
25 900 2,4
26 1000 2,4
27 1000 34,2
28 1000 1,2
29 1000 21,2
30 1000 10,2
答案 1 :(得分:1)
使用UNPIVOT
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)),
t2.ID_Quantity,
t1.Value
FROM Table2 t2
INNER JOIN
(
SELECT *
FROM Table1
UNPIVOT
(
[Values] FOR [Columns] IN ([A1], [A2],[A3], [A4], [A5],[A6])
) as pvt
) t1
ON t1.Columns = t2.KOD
答案 2 :(得分:0)
试试这个:
create table3
(ID_QUANTITY
int(11),VALUE
int(11));
for($i=1;$i<6;$i++){
$insert=mysql_query("insert into table3 select a.ID_QUANTITY,b.A$i from table2 a,table1 b where a.KOD='A$i');
}