SQL 将数据插入临时文件 table,拆分列

SQL inserting data into a temp table, splitting a column

我正在尝试从 table 获取数据并将信息拆分为临时 table 中的两列,但我遇到了一些麻烦。让我解释一下。

table : a    
+-------+-----------+-----------+
|   ID  |    Type   |    Word   |     
+-------+-----------+-----------+
|   1   |    Fr     |   Wee     |   
|   1   |    Eng    |   Yes     |   
|   2   |    Fr     |   Non     |  
|   2   |    Eng    |   No      |   
|   3   |    Fr     |   Bien    |  
|   3   |    Eng    |   Good    |
+-------+-----------+-----------+

我有上面的 table 并且我想将单词数据插入临时文件 table 但我想将其拆分为法语单词和英语单词。我用过以下。

CREATE TABLE #translation
(
French NVARCHAR(50),
English NVARCHAR(50)
)

INSERT INTO #translation (French)
SELECT Word FROM a
WHERE Type = 'Fr'

INSERT INTO #translation (English)
SELECT Word FROM a
WHERE Type = 'Eng'

这种工作但产生:

+-------+-----------+-----------+
|  Row  |  French   |  English  |     
+-------+-----------+-----------+
|   1   |    Wee    |   NULL    |   
|   2   |    Non    |   NULL    |   
|   3   |    Bien   |   NULL    |  
|   4   |    NULL   |   Yes     |   
|   5   |    NULL   |   No      |  
|   6   |    NULL   |   Good    |
+-------+-----------+-----------+

理想情况下,我希望它们并排。

对此有什么建议吗?

如果需要更多信息,请询问。

一种方法是条件聚合:

INSERT INTO #translation (French, English)
    SELECT MAX(CASE WHEN Type = 'FR' THEN Word END),
           MAX(CASE WHEN Type = 'EN' THEN Word END)       
    FROM a
    GROUP BY id;

使用条件聚合:

select id, max(case when Type = 'Fr' then word end) as French,
max(case when Type = 'Eng' then word end) as English
from table1
group by id

使用Pivot将行转为列

架构:

CREATE TABLE #ACTUAL(ID INT, Type Varchar(10), Word Varchar(10))

INSERT INTO #ACTUAL
SELECT 1,'Fr' ,'Wee'   
UNION ALL    
SELECT 1,'Eng','Yes'       
UNION ALL
SELECT 2,'Fr' ,'Non'      
UNION ALL
SELECT 2,'Eng','No'     
UNION ALL  
SELECT 3,'Fr' ,'Bien'   
UNION ALL   
SELECT 3,'Eng','Good'  

查询:

SELECT *
FROM #ACTUAL A
PIVOT 
(
    MAX(Word) FOR Type IN ([Fr],[Eng] )
)PV

结果

ID  Fr      Eng
----------------
1   Wee     Yes
2   Non     No
3   Bien    Good