Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server 2008 сравнява две таблици в една и съща база данни и колоната за получаване се променя

Можете да направите това с помощта на LEFT JOIN :

SELECT  b.Product,
        b.Qty,
        b.Price,
        Result = CASE WHEN a.product IS NULL THEN 'New'
                    ELSE 'Updated: ' + 
                        STUFF(  CASE WHEN a.Qty != b.Qty THEN ',Qty' ELSE '' END + 
                                CASE WHEN a.Price != b.Price THEN ',Price' ELSE '' END,
                            1, 1, '')
                END
FROM    TableB b    
        LEFT JOIN TableA a
            ON a.Product = b.Product
WHERE   a.Product IS NULL
OR      a.Qty != b.Qty
OR      a.Price != b.Price;

Пример за SQL Fiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Доставчикът на OLE DB „Microsoft.Jet.OLEDB.4.0“ не може да се използва за разпределени заявки

  2. Използване на променлива в заявка OPENROWSET

  3. Как мога да попълня колона с произволни числа в SQL? Получавам една и съща стойност във всеки ред

  4. Грешка на SQL Server 213:Името на колоната или броят на предоставените стойности не съответстват на дефиницията на таблицата.

  5. Мониторинг на изпълняваните заявки на SQL Server