showStoreGL <- function(pat, DT=DT.GL, by=c("Music_vs_Video_by_DMV", "DMV"), metaCols=c("ID_greatplains", "storepart"), .SDcols="Total_ThisMonth"
                        , na.rm=TRUE, ignore.case=TRUE) {
  showStoreAcc(pat=pat, DT=DT, by=by, .SDcols=.SDcols, metaCols=metaCols, na.rm=na.rm, ignore.case=ignore.case)
}

showStoreAcc <- function(pat, DT=DT.acc, by=c("release_product_type", "music_vs_video", "music_vs_video_by_transac", "music_vs_video_by_product")
                        , metaCols=c("storeid", "store_name") , .SDcols="gross"
                        , na.rm=TRUE, ignore.case=TRUE) {
  if (!is.character(by))
    stop ("'by' should be a character")

  if (length(by)==1 && grepl(",", by))
    by <- strsplit(by, ",")[[1L]]

  by <- c(metaCols, by)
  by <- intersect(by, names(DT))

  DT[grepl(pat, store_name, ignore.case=ignore.case), lapply(.SD, sum, na.rm=na.rm), keyby=by, .SDcols=.SDcols]
}

# showStoreAcc("Sony")
# showStoreGL("Sony")
