2016-05-13 2 views
2

У меня есть базы данных MSSQL и следующие таблицыMSSQL проблемы запроса

WHE

+----------+----------+----------+ 
| Item No_ | Bin Code | Quantity | 
+----------+----------+----------+ 
| 0000955 | K2-3-3 | -2  | 
+----------+----------+----------+ 
| 0000955 | C2-2-4 | 3  | 
+----------+----------+----------+ 
| 0000955 | K2-3-3 | 5  | 
+----------+----------+----------+ 
| 0000955 | K2-3-3 | 1  | 
+----------+----------+----------+ 
| 0000955 | C2-2-4 | -1  | 
+----------+----------+----------+ 
| 0000955 | K2-3-3 | -10  | 
+----------+----------+----------+ 
| 0000955 | C2-2-4 | 7  | 
+----------+----------+----------+ 
| 0000955 | K2-3-3 | 3  | 
+----------+----------+----------+ 
| 0000955 | C2-2-4 | 8  | 
+----------+----------+----------+ 

Item

Когда я выполнить запрос

select [Bin Code], 
sum([Quantity]) 
from dbo.[whe] 
where [Item No_]='0000955'GROUP BY [Bin Code] 

Получить возвращаемые результаты

+----------+----------+ 
| Bin Code | Quantity | 
+----------+----------+ 
| K2-3-3 | -3  | 
+----------+----------+ 
| C2-2-4 | 17  | 
+----------+----------+ 

Но мне нужно что-то вроде этого, чтобы работать

select we.[Bin Code], 
sum(we.[Quantity]), 
it.[Item No_], 
it.[Desc], 
from dbo.[whe] as we, 
dbo.[item] as it 
and it.[No_]=we.[Item No_] 

Я хотел бы что-то вроде этого в результате

+-----------------+--------+----------+----------+ 
| Item No_ | Desc | Bin Code | Quantity | 
+-----------------+--------+----------+----------+ 
| 0000955   | Valve | K2-3-3 | -3  | 
+-----------------+--------+----------+----------+ 
| 0000955   | Valve | C2-2-4 | 17  | 
+-----------------+--------+----------+----------+ 

Но запрос не является исполняемым и получаю сообщение об ошибке, как

Столбец «dbo.Item.No_» недействителен в списке выбора beca его использование не содержится ни в агрегатной функции, ни в предложении GROUP BY.

+2

Может ли вы получить PL PLUS ожидаемый выход? – Dhaval

+0

Если вы хотите выбирать столбцы при использовании GROUP BY, они либо должны быть частью предложения GROUP BY, либо в агрегатной функции (пример: SUM). Или вам нужно переосмыслить свой подход и, возможно, рассмотреть версию оконной функции SUM. –

+0

Ваш ожидаемый результат пожалуйста. И ваш запрос имеет> 2 ошибки: ',' ​​before ** from **; 'old style join'; last 'and' должен быть изменен на' on' (если вы держите старый стиль, а затем 'where'); плохая сумма «сумма». Продолжение следует.... –

ответ

0

Вы можете использовать нижеследующий запрос, если хотите показать столбец desc.

select t1.[Bin Code],t1.[Quantity],t1.[Item No_],t2.[Desc] (select [Bin Code], 
sum([Quantity]) as [Quantity],[Item No_] 
from dbo.[whe] 
where [Item No_]='0000955'GROUP BY [Bin Code],[Item No_]) t1 
left join dbo.[Item] t2 
on (t1.[Item No_]=t2.[Item No_]) 
1

Если вы хотите Item No_ и Desc добавляемые к выходу, необходимо включить их в group by, как указано ошибка.

select [Item No_], [Desc], [Bin Code], sum([Quantity]) 
from dbo.[whe] w 
inner join dbo.[Item] i 
on w.[Item No_] = i.[Item No_] 
group by [Item No_], [Desc], [Bin Code] 
Смежные вопросы