Я строю сводный запрос внутри CTE.У меня есть таблица Table_1:
Store Count xCount
------- ---- ------
101 1 138
109 1 59
101 2 282
109 2 97
105 3 60
109 3 87
105 4.a 60
109 4.b 87
В Table_1 типом счетчика столбцов является varchar (10).
Я использовал динамический сводный запрос к сводной таблице Table_1
DECLARE @DynamicCol AS NVARCHAR(MAX),
@SQL AS NVARCHAR(MAX)
select @DynamicCol = STUFF((SELECT distinct ',' + QUOTENAME(count)
from table_1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @SQL = ';WITH CTE as (
SELECT store,' + @DynamicCol + ' from
(
select * from table_1
) res
pivot
(
MAX(xCount)
for Count in (' + @DynamicCol + ')
) piv ) SELECT *
FROM CTE where 4.a is null'
execute(@SQL);
и получить результат как:
| STORE | 1 | 2 | 3 | 4.a |
+-------+-----+-----+-----+-----+
| 101 | 138 | 282 | null| null|
| 105 | null| null| 60 | 60 |
| 109 | 59 | 97 | 87 | 87 |
Теперь я попытался получить данные из столбцов 3 и 4.a, где 3 и 4.a - ноль.Запрос, который я строю, чтобы получить данные:
Select * from CTE where 3 is null
Select * from CTE where 4.a is null
Также я попытался использовать это внутреннее утверждение case как:
Select *,case when (3 is null) then 'some result' else '' end from CTE
В каждом запросе я не получаю никакого значения, возвращаемого запросами.Я попытался добавить 'X' в каждый поворотный столбец и удалить '.'из столбца anme, как имя столбца выглядит как
| STORE | X1 | X2 | X3 | X4a |
+-------+-----+-----+-----+-----+
| 101 | 138 | 282 | null| null|
| 105 | null| null| 60 | 60 |
| 109 | 59 | 97 | 87 | 87 |
Я не могу запросить это.Может ли кто-нибудь помочь мне или предложить какую-либо другую идею для получения данных, используя вышеупомянутый запрос?