2015-12-11 4 views
0

Любой! Помогите мне с этой проблемой. Я не могу усреднить эти данные в sql-сервере, потому что это nvarchar.Средство NVARCHAR в SQL Server

| Server | Roundtrip | Site | 
    A  340ms  QW 
    A  400ms  QW 
    A  350ms  QW 
    B  300ms  QW 
    B  400ms  QW 
    B  350ms  QW 
    C  340ms  QW 
    C  400ms  QW 
    C  350ms  QW 
    D  340ms  QW 
    D  400ms  QW 
    D  350ms  QW 
    A  340ms  WQ 
    A  400ms  WQ 
    A  350ms  WQ 
    B  340ms  WQ 
    B  400ms  WQ 
    B  350ms  WQ 
    C  340ms  WQ 
    C  400ms  WQ 
    C  350ms  WQ 
    D  340ms  WQ 
    D  400ms  WQ 
    D  350ms  WQ 

Возможно ли усреднить эти данные без удаления мс? Кроме того, фильтруя его, как этот

| Server | Ave-Roundtrip-WQ | Ave-Roundtrip-WQ | 
    A   363.33    363.33 
    B   363.33    363.33 
    C   363.33    363.33 
    D   363.33    363.33 

Любой .. Пожалуйста, помогите мне

ответ

1

Нет, это не возможно делать арифметические операции над данными, которые не могут быть преобразованы в числовой тип. Ваше единственное решение - получить это числовое значение из ваших данных.

Чтобы получить числовое значение Roundtrip, вам необходимо удалить 'ms'. Вы можете сделать это, используя REPLACE. Затем переведите результат в числовой тип данных. Затем поставить среднее 'WQ' и 'QW' на отдельных колонках, что вам нужно сделать условную агрегацию:

SQL Fiddle

SELECT 
    Server, 
    [Ave-Roundtrip-WQ] = AVG(CASE WHEN Site = 'WQ' THEN CAST(REPLACE(Roundtrip, 'ms', '') AS NUMERIC (30, 4)) END), 
    [Ave-Roundtrip-QW] = AVG(CASE WHEN Site = 'QW' THEN CAST(REPLACE(Roundtrip, 'ms', '') AS NUMERIC (30, 4)) END) 
FROM tbl 
GROUP BY Server 

РЕЗУЛЬТАТ

| Server | Ave-Roundtrip-WQ | Ave-Roundtrip-QW | 
|--------|------------------|------------------| 
|  A |  363.333333 |  363.333333 | 
|  B |  363.333333 |    350 | 
|  C |  363.333333 |  363.333333 | 
|  D |  363.333333 |  363.333333 | 
+0

Может ли это быть фиксированной на 2 знаков после запятой ? – Elphrian

+0

Что значит фиксированный десятичный? Вы можете просто заменить масштаб и точность, когда 'CAST'ing. –

+0

BTW Спасибо :) :)) – Elphrian

Смежные вопросы