1

データベースのフィールドを使用して合計を計算する「SENOKO」列を追加したいクエリを実行しました。Group By SENOKO を使用しなかった場合、繰り返し結果がレポートに表示されます。重複記録を避けるため、SENOKO を Group By にしようと考えたのですが、以下のようなエラーが表示されました。

無効な列名「SENOKO」

SELECT customer.customer, customer.imp_license_no, customer.psq_level, whbal.stock_type, (SELECT SUM((CONVERT(DECIMAL(9, 3), qty_good) + CONVERT(DECIMAL(9, 3), qty_slack)) * CONVERT(DECIMAL(9, 3), std_weight) / 1000) FROM whbal WHERE warehouse='SKW')AS SENOKO 
FROM customer 
INNER JOIN whbal ON customer.customer=whbal.customer 
INNER JOIN stktype ON whbal.stock_type=stktype.stock_type 
WHERE customer.customer BETWEEN @cust1 AND @cust2 AND whbal.stock_type=@type 
GROUP BY customer.customer, customer.imp_license_no, customer.psq_level, whbal.stock_type, SENOKO

誰でも助けてもらえますか?

4

1 に答える 1

1

SENOKOGROUP BYは派生列であるため、節で直接使用することはできません。

これを使って:

select * from (
SELECT customer.customer, customer.imp_license_no, customer.psq_level, whbal.stock_type, (SELECT SUM((CONVERT(DECIMAL(9, 3), qty_good) + CONVERT(DECIMAL(9, 3), qty_slack)) * CONVERT(DECIMAL(9, 3), std_weight) / 1000) FROM whbal WHERE warehouse='SKW')AS SENOKO 
FROM customer 
INNER JOIN whbal ON customer.customer=whbal.customer 
INNER JOIN stktype ON whbal.stock_type=stktype.stock_type 
WHERE customer.customer BETWEEN @cust1 AND @cust2 AND whbal.stock_type=@type 
) as subquery
GROUP BY subquery.customer, subquery.imp_license_no, subquery.psq_level, subquery.stock_type, Subquery.SENOKO
于 2013-10-31T02:24:26.267 に答える