Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 pivot + case  [new]
gosurusya
Member

Откуда:
Сообщений: 28
Ребят нужна помощь. Нужно придумать так что когда строки разворачиваются пивотом они попадали под условия.

SELECT ContractID,PhoneNum
,ISNULL([16], 0) [16],
ISNULL([15], 0) [15],
ISNULL([14], 0) [14],
ISNULL([13], 0) [13],
ISNULL([17], 0) [17],
ISNULL([11], 0) [11],
ISNULL([12], 0) [12],
ISNULL([10], 0) [10],
ISNULL([9], 0) [9],
ISNULL([8], 0) [8],
ISNULL([7], 0) [7],
ISNULL([6], 0) [6],
ISNULL([3], 0) [3],
ISNULL([5], 0) [5],
ISNULL([21], 0) [21],
ISNULL([18], 0) [18],
ISNULL([19], 0) [19],
ISNULL([20], 0) [20],
ISNULL([4], 0) [4],
ISNULL([2], 0) [2]
,[ArcDate]

,[Source_Name]
, [Account]
FROM (
SELECT SUBSTRING(me.ContractID,12,7) ContractID
, SUBSTRING(me.ContractID, PATINDEX('%Номер телефону:%',me.ContractID)+16,9) PhoneNum
, s.id
, CAST (CASE
WHEN s.id = 1 THEN SUBSTRING(me.ContractID,12,7)
ELSE REVERSE(LEFT(REVERSE(me.Category), PATINDEX('%,%',REVERSE(me.Category))-1))
END AS FLOAT) SUMMA
,DATEADD(d,-1,CONVERT(DATETIME, REPLACE(substring('10_2014_03_part_35',4,7),'_','/')+'/01',102)) ArcDate
,me.Source_Name
,left(me.Source_Name,2) Account
FROM MTS_export me WITH (NOLOCK)
JOIN [MTS_category] s ON left(me.Category,LEN(s.explanation))=s.explanation

) as t
PIVOT
(
SUM SUMMA

FOR id IN (
[16],[15],[14],[13],[17],[11],[12],[10],[9],[8],[7],[6],[3],[5],[21],[18],[19],[20],[4],[2])
) AS PivotTable;


Когда я делаю вывод у меня выходит вот так и получается мне нужно отобрать только одно значение чтобы оно отображало. А не два

К сообщению приложен файл (Книга18.xlsx - 12Kb) cкачать
4 апр 14, 18:22    [15834636]     Ответить | Цитировать Сообщить модератору
 Re: pivot + case  [new]
pegoopik
Member

Откуда: Новосибирск
Сообщений: 54
gosurusya,

А можете показать, что у вас возвращает подзапрос во FROM?
Запихал туда "левых данных" и PIVOT нормально отобразил в одну строку.

SELECT ContractID,PhoneNum
,ISNULL([16], 0) [16], 
ISNULL([15], 0) [15], 
ISNULL([14], 0) [14],
ISNULL([13], 0) [13], 
ISNULL([17], 0) [17], 
ISNULL([11], 0) [11], 
ISNULL([12], 0) [12], 
ISNULL([10], 0) [10],
ISNULL([9], 0) [9], 
ISNULL([8], 0) [8], 
ISNULL([7], 0) [7], 
ISNULL([6], 0) [6], 
ISNULL([3], 0) [3], 
ISNULL([5], 0) [5], 
ISNULL([21], 0) [21],
ISNULL([18], 0) [18],
ISNULL([19], 0) [19],
ISNULL([20], 0) [20], 
ISNULL([4], 0) [4], 
ISNULL([2], 0) [2] 
,[ArcDate] 

,[Source_Name] 
, [Account] 
FROM ( 

SELECT 591670 ContractId, '504136639' PhoneNum, CAST('2014-02-28T00:00:00.000' AS DATETIME)ArcDate, '10_2014_03_part_1'Source_name, 10 Account,17 abcde,
*
FROM(VALUES(18, 4.17),(19, 8.67),(2, 6.84),(2, 6),(555, 555))T(id, SUMMA)

) as t 
PIVOT 
( 
SUM(SUMMA)

FOR id IN ( 
[16],[15],[14],[13],[17],[11],[12],[10],[9],[8],[7],[6],[3],[5],[21],[18],[19],[20],[4],[2]) 
) AS PivotTable
5 апр 14, 05:24    [15836214]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить