2013-04-22 2 views
1

Google 스프레드 시트 SQL-ish Query을 사용하여 여러 스프레드 시트의 데이터를 요약합니다. 이것은 천천히 일하고는 있지만 오랫동안 잘 작동 해 왔습니다.Google 스프레드 시트 QUERY ... 작업을 중단 한 곳

오늘 일부 검색어에 문제가 있습니다. 특히 소스 데이터의 날짜를 TODAY()과 비교하는 경우 문제가 있습니다.

가짜 데이터에서 문제를 재현하기 위해 사용한 link to a shared spreadsheet은 다음과 같습니다.

편집 : 예가 AdamL의 제안으로 업데이트되었습니다.

enter image description here

소스 데이터가 컬럼 "일련 번호", "입력", "위치"및 "보증 만료"으로 A1:D6 범위이다. 마지막 열은 날짜입니다. A9에서

이 기능

모든 데이터를 요약 :

=query(A1:D6,"select B, count(A) group by B pivot C") 

을 ...과 같이 :

=query(A1:D6,"select B, count(A) group by B pivot C")

가 여기에 일입니다. WHEREDATE()을 사용하여 필터링하려고하면 쿼리가 완전히 무너지는 것 같습니다. 내가 원했던 것은 위와 같지만 과거의 열 D에 날짜가있는 데이터 행만 포함하는 테이블입니다. 나는 이것이 나에게 내가 원하는 요약을 제공하기 위해 어떻게합니까

=query(A1:D6,"select B, count(A) where B='Mech' group by B pivot C")

: 나는 날짜를 포함하지 뭔가 필터를 변경하는 경우

=query(A1:D6,"select B, count(A) where D < now() group by B pivot C") 

=query(A1:D6,"select B, count(A) where D < now() group by B pivot C")

, 내가 예상 출력을 얻을 ?

답변

3

now() scalar function은 datetime 값을 반환하고 원본 데이터에 날짜 값을 갖습니다. 이 둘 사이의 비교는 불행하게도 실패 할 것입니다. , 제한 (버그?)가 조회 함수와 지금() 스칼라 함수하지 않는있다 제쳐두고

=QUERY(A1:D6;"select B, count(A) where D < toDate(now()) group by B pivot C")


: 해결은 날짜 값()가 변환한다 (필연적으로) 스프레드 시트의 시간대에서 작동하며이 동작을 수정하는 방법이없는 것으로 보입니다. now() 스칼라 함수는 태평양 일광 절약 시간 (예 : 미국 서부 해안)의 현재 시간을 항상 반환합니다. 그래서 저에게는 지금 호주의 브리즈번에서 QUERY select 절에 사용 된 toDate (now())가 어제의 날짜를 반환합니다.

안전한 베팅은 QUERY 절에 그것을 오늘 날짜를 생성하기 위해 스프레드 시트 기능을 사용하여 연결하는 것입니다 :

=QUERY(A1:D6;"select B, count(A) where D < date '"&TEXT(GoogleClock();"yyyy-MM-dd")&"' group by B pivot C")

+0

내가 탄 것을 줄 것이다.내 실제 시트에는 datetime 값이 있으며 지난 며칠 동안 내 쿼리가 작동을 멈췄습니다! – Mogsdad

+0

아하이 봐요. 시간대 문제에도 불구하고 datetime 값 *은 * 작동해야합니다. 방금 검색된 것으로 보이는 몇 가지 사항을 테스트했습니다. – AdamL

+0

골드 스타! 그것은 트릭을했다. 그들은'date'와'datetime'의 비교를 강화한 것 같습니다. – Mogsdad