2013-06-11 3 views
3

Я уменьшения этой проблемы очень простой форме:TSQL Как я могу группировать литералы?

SELECT 
'A' AS [Literal] 
UNION 
SELECT 
'B' AS [Literal] 
GROUP BY 
[Literal] 

Я получаю сообщение:

Msg 207, Level 16, State 1, Line 7 Неверное имя столбца '' Дословный ,

Я попытался это с теми же результатами:

SELECT 
t.literal FROM 
(SELECT 'A' AS [Literal]) t 
UNION 
SELECT 
'B' 
GROUP BY 
[Literal] 
+0

У вас есть другие столбцы или только этот? –

ответ

6

Вы должны производную таблицу, если вы хотите, чтобы GROUP BYUNION:

SELECT X.[Literal], [Count] = COUNT(*) 
FROM(
    SELECT [Literal] = 'A' 
    UNION ALL 
    SELECT [Literal] = 'B' 
) X 
GROUP BY X.[Literal] 

Demo

+0

Спасибо, это всего лишь билет. – Ruminator

1

Вы можете использовать CTE ...

;WITH cte AS (
SELECT 
'A' AS [Literal] 
UNION 
SELECT 
'B' AS [Literal]) 
SELECT [Literal] 
FROM cte 
GROUP BY [Literal] 
+0

Нет, это неправильно. Это то, что ОП и не работает. «GROUP BY» применяется ко второму выбору. –

+0

Ну, если первая была ошибкой, вы могли бы просто ее отредактировать. –

+0

Я думал, что это будет ясно, хромой, чтобы сделать это так ...: P – OzrenTkalcecKrznaric

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