更新 我在插入值并将其分配给p_id = 0之前最终只使用了插入,结果就像我需要它一样。谢谢!
INSERT INTO table2 (p_id,value)
Values(0,@@SYS=DEV');
我正在尝试将Table1中的3列组合在一起,并将Table2中的值放在一列中,但我还想在值前加上A,& B,& C,如下所示。 P_Id是自动递增。
表1
+---------+--------+-----------+
| Emp_ID | Status | hire_date |
+---------+--------+-----------+
| 12345 | happy | 10/10/2005|
| 54321 | sad | 12/01/2009|
+---------+--------+-----------+
插入表2 ....
我以为我可以在这个解决方案中插入一个静态行,但它在每个新的emp_id上重复,而我只需要在顶行中一次。
+------+--------------+
| P_Id | Info |
+---------------------+
| 1 | @@=Dev |
| 2 | A,12345 |
| 3 | B,happy |
| 4 | C,10/10/2005 |
| 5 | A,54321 |
| 6 | B,sad |
| 7 | C,12/01/2009 |
+------+--------------+
非常感谢任何帮助!环境是SQL Server 2008。
答案 0 :(得分:2)
你可以在一个选择中执行此操作,如下所示:
with cte as (
select T.Emp_ID, C.Value
from Table1 as T
outer apply (values
('A,' + cast(T.Emp_ID as varchar(max))),
('B,' + T.Status),
('C,' + convert(varchar(10), T.hire_date, 103))
) as C(Value)
)
-- insert into Table2
select
row_number() over(order by Emp_ID, Value) as p_id,
Value
from cte
<强> sql fiddle demo 强>
答案 1 :(得分:0)
Insert Into Table2
Select 'A, '+Convert(varchar(10),Emp_ID) From Table1
Union
Select 'B, '+Status From Table1
Union
Select 'C, '+convert(varchar(12),Hire_Date) From Table1