2

更新在插入值并将其分配给它 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。

4

2 回答 2

3

您可以一次选择执行此操作,如下所示:

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

于 2013-10-23T19:12:58.733 回答
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
于 2013-10-23T19:11:31.293 回答