우리 데이터베이스에는 다음 행을 따라 십진수 형식을 사용하는 테이블이 있습니다. yyyymmdd, 모두 하나의 큰 십진수 (즉, 오늘은 20130225)입니다. 월별 버킷으로 다시 가져 오는 SQL 쿼리를 만들려고합니다. 내 연구에서 가장 좋은 방법은 숫자를 100으로 나누어 맨 오른쪽에있는 날을 잘라내는 것입니다 (나머지는 제거하면 20130225/100은 201302와 같습니다)"SELECT 목록의 표현식이 유효하지 않습니다."
나는 알아낼 수 없습니다. 어떻게 작동하게하는지. 내 선택과 그룹화 모두에서 (INVOICE_DATE/100) As "INVOICE_MONTH"
과 같은 것을 사용하기 시작했습니다. 그게 작동하지 않았을 때 그룹을 "INVOICE_MONTH"
으로, 그 다음에 (INVOICE_DATE/100)
으로 줄였습니다. 그래서 선택과 그룹을 단지 INVOICE_DATE/100
으로 줄였습니다. 여전히 작동하지 않는 것 같습니다.
여기에 (몇 작은 redactions와) 전류에서 내 코드 내 어디 문이뿐만 아니라 문제를 일으키는 경우 내가 도움이되지만 궁금 수
Select Count(COMPETITOR_NAME) as "STORE COUNT",
COMPETITOR_NAME,
INVOICE_DATE/100,
CUSTOMER_NUMBER,
OVERRIDE_TYPE,
Sum (QTY_SOLD) as "Quantity Sold",
Sum (EXT_ORIGINAL_PRICE) as "Sum Original Price",
Sum (EXT_OVERRIDE_PRICE) as "Sum Override Price",
Sum (EXT_VARIANCE) As "Sum Variance",
Sum (INTERNAL_COST) as "Internal Cost"
From DA*****.DW*******.PRCOVRWK
Where INVOICE_DATE/100 between 201002 and 201302
Group By ROLLUP(COMPETITOR_NAME,
INVOICE_DATE/100),
OVERRIDE_TYPE,
CUSTOMER_NUMBER
Order By OVERRIDE_TYPE,
COMPETITOR_NAME,
INVOICE_DATE,
CUSTOMER_NUMBER
입니다. 처음에는 Where INVOICE_DATE between 20100225 and 20130225
을 사용하고 있었지만 Select 문과 같은 것을 사용해야 할 필요가있을 것이라고 생각했습니다. (예, 지금이 시점에서 다소 늘고 있습니다.) IBM 웹 사이트의 문서를 따르기 위해 최선을 다했지만 기대했던대로 작동하지 않는 것으로 잘못 읽고 있어야합니다.
아무튼. 기본적인 필요 사항은 월간 버킷으로 정보를 다시 가져올 수 있어야합니다. 그래서, 당신이 다른 접근법을 안다면 받아 들일 수 있습니다. 내 희망은 단지 십진수 나누기를 사용하여 연도/날짜 콤보를 가져 와서 Group By에서 필요한 결과를 얻는 것입니다.
PS- 우리는 i5 용 DB2 v5.1을 사용하고 있습니다.
'month (Invoice_Date)'는 월을 추출하지 않습니까? 그렇지 않다면 필드에 대한 데이터 유형을 확인할 수 있습니까? – xQbert
선택 목록에있는 어떤 표현이 불평입니까? (작동 될 때까지 하나씩 제거하십시오.) –
@xQbert 날짜는 10 진수로 표시됩니다. 10 진수로 날짜 산술을 사용할 수 없다고 생각 했나요? –