T-SQL将字符串字段追加到另一列中存在的列

时间:2015-09-03 15:08:28

标签: sql sql-server tsql

我想将AttorneyList附加到AttorneyList的第二个结果集中,并使用相同的DateFDdue。如何使用T-SQL查询执行此操作?此外,是否可以对新添加的AttorneyList进行排序?

结果集1

+-------------------+-----------------------------------+
|     DateFDdue     |           AttorneyList            |
+-------------------+-----------------------------------+
| September 8, 2015 |  Vitali (Purple) (Orange) (Lorah) |
+-------------------+-----------------------------------+
| September 9, 2015 |  Ricords (Purple) (Orange) (OOR)  |
+-------------------+-----------------------------------+

结果集2

+--------------------+-------------------------------------+
|     DateFDdue      |            AttorneyList             |
+--------------------+-------------------------------------+
| September 3, 2015  |  Mlinarich (Higgins); Riches (OOR)  |
+--------------------+-------------------------------------+
| September 4, 2015  |  APSCUF (Higgins); APSCUF (Higgins) |
+--------------------+-------------------------------------+
| September 8, 2015  |  Brown (Singh); Burda (Zeppos)      |
+--------------------+-------------------------------------+
| September 9, 2015  |  Gay (OOR); Graves (OOR)            |
+--------------------+-------------------------------------+
| September 10, 2015 |  Burda (Higgins); WFMZ-TV (Young)   |
+--------------------+-------------------------------------+

换句话说,如何将两个结果集合并到:

最终结果

+--------------------+-------------------------------------+
|     DateFDdue      |            AttorneyList             |
+--------------------+-------------------------------------+
| September 3, 2015  |  Mlinarich (Higgins); Riches (OOR)  |
+--------------------+-------------------------------------+
| September 4, 2015  |  APSCUF (Higgins); APSCUF (Higgins) |
+--------------------+-------------------------------------+
| September 8, 2015  |  Brown (Singh); Burda (Zeppos); Vitali (Purple (Orange) (Lorah)         |                                     |
+--------------------+-------------------------------------+
| September 9, 2015  |  Gay (OOR); Graves (OOR); Ricords (Purple (Orange) (OOR)                    |                                     |
+--------------------+-------------------------------------+
| September 10, 2015 |  Burda (Higgins); WFMZ-TV (Young)   |
+--------------------+-------------------------------------+

2 个答案:

答案 0 :(得分:2)

这将在两个列表中引入日期/律师,并在两个列表中的同一日期连接:

SELECT  ISNULL(rs1.DateFDdue, rs2.DateFDdue) AS DateFDdue
        , ISNULL(rs1.AttorneyList, '') + ' ' + ISNULL(rs2.AttorneyList, '') AS AttorneyList
FROM    ResultSet1 rs1
        FULL OUTER JOIN ResultSet2 rs2 ON rs1.DateFDdue = rs2.DateFDdue;

答案 1 :(得分:0)

要对行进行排序,您需要将varchar值转换为datetime

;
WITH    ResultSet1  AS
(
        SELECT  CONVERT(NVARCHAR(20), DateFDdue) DateFDdue, AttorneyList
        FROM
        (       VALUES
                ('September 8, 2015', 'Vitali (Purple) (Orange) (Lorah)'),
                ('September 9, 2015', 'Ricords (Purple) (Orange) (OOR)')
        )       ResultSet(DateFDdue, AttorneyList)
),      ResultSet2  AS
(
        SELECT  CONVERT(NVARCHAR(20), DateFDdue) DateFDdue, AttorneyList
        FROM
        (       VALUES
                ('September 3, 2015', 'Mlinarich (Higgins); Riches (OOR)'),
                ('September 4, 2015', 'APSCUF (Higgins); APSCUF (Higgins'),
                ('September 8, 2015', 'Brown (Singh); Burda (Zeppos)'),
                ('September 9, 2015', 'Gay (OOR); Graves (OOR)'), 
                ('September 10, 2015', 'Burda (Higgins); WFMZ-TV (Young)')
        )       ResultSet(DateFDdue, AttorneyList)
),      FinalResult AS
(
        SELECT  ISNULL(ResultSet1.DateFDdue, ResultSet2.DateFDdue) AS DateFDdue,
                ISNULL(ResultSet1.AttorneyList, '') + ' ' + 
                ISNULL(ResultSet2.AttorneyList, '') AS AttorneyList
        FROM    ResultSet1
        FULL    OUTER JOIN ResultSet2 
            ON  ResultSet1.DateFDdue = ResultSet2.DateFDdue
)
SELECT      *
FROM        FinalResult
ORDER BY    CONVERT(datetime, DateFDdue)