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

SQL CONCAT IF израз?

SELECT  agenda.AgendaItemNumber,
        Agenda.AgendaName, 
        AgendaType.AgendaTypeDescription, 
        STUFF(( SELECT  ';' + FullName 
                FROM    UserDetails
                WHERE   UserDetails.AgendaID = Agenda.AgendaID
                FOR XML PATH('')
            ), 1, 1, '') AS fullName 
FROM    Agenda
        INNER JOIN AgendaType 
            ON AgendaType.AgendaTypeID=Agenda.AgendaTypeID
        INNER JOIN UserDetails 
            ON Agenda.AgendaID = Userdetails.AgendaID
WHERE   agenda.AgendaTypeID = '2'
AND     AgendaItemNumber = AgendaItemNumber
AND     AgendaName = AgendaName
AND     AgendaTypeDescription = AgendaTypeDescription
AND     AgendaItemNumber >= '3'

ДОПЪЛНЕНИЕ

XML разширението в SQL-Server ви позволява да свържете няколко реда в един ред. Действителното намерение на разширението е да можете да извеждате като XML (очевидно), но има някои изящни трикове, които са странични продукти на разширенията. В горната заявка, ако имаше име на колона в подзаявката (пълно име), то щеше да се изведе като Joe Bloggs1Joe Bloggs2 , тъй като няма име на колона, той просто свързва редовете (без да формира правилен XML). PATH част ви позволява да посочите допълнителен възел, например ако използвате PATH('Name') в горното, ще получите ;Joe Bloggs;Joe Bloggs2 Ако комбинирате Path с име на колона, ще получите Joe Bloggs.

И накрая НЕЩАТА просто премахва точката и запетая в началото на списъка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Хипервръзка към стойност в резултат от заявка на SQL Server в SSMS

  2. SQL. SP или функцията трябва да изчисли следващата дата за петък

  3. Премахване на дублиращи се стойности въз основа само на една колона от таблицата

  4. съпоставяне на sql сървър за многоезични данни

  5. Вмъкнете всички стойности на таблица в друга таблица в SQL