Центр TSQL без агрегатной функции

Для фиксированного coloumn просто набор height:xxxpx заставит их равняться.

Использование это генератор расположения на 3 столбца для попытки.

120
задан Mahmoud Gamal 25 December 2011 в 08:14
поделиться

4 ответа

Вы можете использовать агрегат MAX, он все равно будет работать. Максимум одного значения = это значение ..

В этом случае вы также можете 5 раз самостоятельно присоединиться к Customerid, фильтруя по dbColumnName по ссылке на таблицу. Это может сработать лучше.

89
ответ дан 24 November 2019 в 01:36
поделиться
SELECT
main.CustomerID,
f.Data AS FirstName,
m.Data AS MiddleName,
l.Data AS LastName,
d.Data AS Date
FROM table main
INNER JOIN table f on f.CustomerID = main.CustomerID
INNER JOIN table m on m.CustomerID = main.CustomerID
INNER JOIN table l on l.CustomerID = main.CustomerID
INNER JOIN table d on d.CustomerID = main.CustomerID
WHERE f.DBColumnName = 'FirstName' 
AND m.DBColumnName = 'MiddleName' 
AND l.DBColumnName = 'LastName' 
AND d.DBColumnName = 'Date' 

Изменить: я написал это без редактора и не запускал SQL. Надеюсь, вы уловили идею.

8
ответ дан 24 November 2019 в 01:36
поделиться

Хорошо, извините за плохой вопрос. gbn направил меня на верный путь. Это то, что я искал в ответе.

SELECT [FirstName], [MiddleName], [LastName], [Date] 
FROM #temp 
PIVOT
(   MIN([Data]) 
    FOR [DBColumnName] IN ([FirstName], [MiddleName], [LastName], [Date]) 
)AS p

Затем мне пришлось использовать оператор while, построить приведенный выше оператор как varchar и использовать dynmaic sql.

Использование чего-то вроде этого

SET @fullsql = @fullsql + 'SELECT ' + REPLACE(REPLACE(@fulltext,'(',''),')','')
SET @fullsql = @fullsql + 'FROM #temp '
SET @fullsql = @fullsql + 'PIVOT'
SET @fullsql = @fullsql + '('
SET @fullsql = @fullsql + ' MIN([Data])'
SET @fullsql = @fullsql + ' FOR [DBColumnName] IN '+@fulltext
SET @fullsql = @fullsql + ')'
SET @fullsql = @fullsql + 'AS p'

EXEC (@fullsql)

Создание @fulltext с помощью цикла while и выбор отдельных имен столбцов из таблицы. Спасибо за ответы.

9
ответ дан 24 November 2019 в 01:36
поделиться

да, но почему !! ??

   Select CustomerID,
     Min(Case DBColumnName When 'FirstName' Then Data End) FirstName,
     Min(Case DBColumnName When 'MiddleName' Then Data End) MiddleName,
     Min(Case DBColumnName When 'LastName' Then Data End) LastName,
     Min(Case DBColumnName When 'Date' Then Data End) Date
   From table
   Group By CustomerId
157
ответ дан 24 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: