sql >> データベース >  >> RDS >> Sqlserver

SQLSERVERのListAGG

    MySQL

    SELECT FieldA
         , GROUP_CONCAT(FieldB ORDER BY FieldB SEPARATOR ',') AS FieldBs
      FROM TableName
     GROUP BY FieldA
     ORDER BY FieldA;
    

    Oracle&DB2

    SELECT FieldA
         , LISTAGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs
      FROM TableName
     GROUP BY FieldA
     ORDER BY FieldA;
    

    PostgreSQL

    SELECT FieldA
         , STRING_AGG(FieldB, ',' ORDER BY FieldB) AS FieldBs
      FROM TableName
     GROUP BY FieldA
     ORDER BY FieldA;
    

    SQL Server

    SQLServer≥2017&Azure SQL

    SELECT FieldA
         , STRING_AGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs
      FROM TableName
     GROUP BY FieldA
     ORDER BY FieldA;
    

    SQLServer≤2016(DRY原則を促進するためにCTEが含まれています)

      WITH CTE_TableName AS (
           SELECT FieldA, FieldB
             FROM TableName)
    SELECT t0.FieldA
         , STUFF((
           SELECT ',' + t1.FieldB
             FROM CTE_TableName t1
            WHERE t1.FieldA = t0.FieldA
            ORDER BY t1.FieldB
              FOR XML PATH('')), 1, LEN(','), '') AS FieldBs
      FROM CTE_TableName t0
     GROUP BY t0.FieldA
     ORDER BY FieldA;
    

    SQLite

    注文にはCTEまたはサブクエリが必要です

      WITH CTE_TableName AS (
           SELECT FieldA, FieldB
             FROM TableName
            ORDER BY FieldA, FieldB)
    SELECT FieldA
         , GROUP_CONCAT(FieldB, ',') AS FieldBs
      FROM CTE_TableName
     GROUP BY FieldA
     ORDER BY FieldA;
    

    注文なし

    SELECT FieldA
         , GROUP_CONCAT(FieldB, ',') AS FieldBs
      FROM TableName
     GROUP BY FieldA
     ORDER BY FieldA;
    


    1. SQL Server(T-SQL)のDAY()の例

    2. スタースキーマとスノーフレークスキーマ

    3. SQLにif-then-elseロジックを含めることはできますか?

    4. Nodejsは、私が期待することを行わないことを表明し、約束します