2017-12-19 9 views
0

편집 : 현재 실행중인 SQuirreL SQL v.3.8.0.테이블을 변경하여 시간대 변경 [WHERE/ALTER]

WHERE 문을 사용하여 고객 데이터를 특정 시간 프레임으로 가져 와서 테이블을 생성하고 저장했습니다. 시간대를 업데이트하는 방법은 무엇입니까? WHERE 문을 변경하려면 ALTER TABLE 함수를 사용했지만 오류 메시지가 나타납니다.

원래 테이블

SELECT Customer, 
AVG(CAST(ItemPrice AS FLOAT)) AS item_price, 
COUNT(DISTINCT(ReceiptIDDesc)) AS number_of_orders, 
SUM(CAST(ItemPrice AS FLOAT)) AS total_spend 
INTO Customer_data_A 
FROM Tacos 
Where (CAST(PurchaseDate AS DateTime) >= '01/01/2017 12:00') AND (CAST(PurchaseDate AS DateTime) <= '12/01/2017 12:00') 
GROUP BY Customer 

ALTER 문 나에게 다음과 같은 오류 메시지가 제공

ALTER TABLE Customer_data_A ALTER COLUMN * WHERE (CAST(PurchaseDate AS DateTime) >= '01/01/2017 12:00') AND (CAST(PurchaseDate AS DateTime) <= '11/01/2017 12:00') 

:

오류 : 근처의 구문이 잘못을 '*'.

의 SQLState : S0001

ErrorCode가 : (102) 대부분의 SQL 방언에서

+1

DB를 사용하여 태그를 지정하면 더 관련성 높은 답변을 얻을 수 있습니다. –

+1

@Theo 당신은 무엇을 통해 UR 쿼리를 달성하려고합니까? – msoliman

+0

@msoliman Jiri의 요점은 내 오해를 분명히했습니다. 내가 만든 테이블을 업데이트하려고했는데 다른 시간대에 맞지 않는데 말이야. SQL의 논리를 완전히 이해하지 못했지만, 의견을 보내 주시면 감사하겠습니다. –

답변

0

, 당신은 "이 쿼리를 수행하고 새 테이블에 결과를 저장"말한다 기본적으로 사용했던 쿼리. 새 테이블과 데이터를 가져 오는 데 사용 된 쿼리 간에는 아무런 관련이 없습니다.

실제 사용하고자하는 것은 뷰 (항상 주어진 쿼리에 대한 현재 데이터를 보여줍니다 - "명명 된 쿼리"라고 생각합니다) 또는 구체화 된 뷰 (실제로 데이터를 테이블에 저장하지만 사용자는 데이터 새로 고침 쿼리의 새로운 결과로부터).

0

기존 데이터를 TRUNCATE하고 기존 테이블 구조를로드 (INSERT INTO)하려는 것 같습니다.

데이터 형식을 변경하거나 제약 조건을 추가 할 때 ALTER TABLE + ALTER COLUMN이 더 많이 사용됩니다 (예 : INT 열을 NUMERIC로 변경하거나 외래 키 참조 추가).

TRUNCATE TABLE Customer_data_A; 

INSERT INTO Customer_data_A 
(Customer, ItemPrice, Number_Of_Orders, Total_Spend) 
SELECT Customer 
     ,AVG(CAST(ItemPrice AS FLOAT)) AS item_price 
     ,COUNT(DISTINCT(ReceiptIDDesc)) AS number_of_orders 
     ,SUM(CAST(ItemPrice AS FLOAT)) AS total_spend 
FROM Tacos 
WHERE (CAST(PurchaseDate AS DateTime) >= '01/01/2017 12:00') AND (CAST(PurchaseDate AS DateTime) <= '11/01/2017 12:00') 
GROUP BY Customer; 
+0

감사합니다. Mike. 도움이됩니다. –