Your Question
How to mention arguments when select columns has variables ?
SELECT SUM(CASE WHEN bin_start > ? THEN count ELSE 0 END) AS count_gt,SUM(CASE WHEN bin_start <= ? AND bin_end >= ? THEN count ELSE 0 END) AS count_eq,SUM(CASE WHEN bin_end < ? THEN count ELSE 0 END) AS count_lt,SUM(count) AS count_total, col1, col2 FROM `table_name` WHERE col3 = ? GROUP BY col1, col2
The document you expected this should be explained
Expected answer
How do i write such query using gorm (basically which has variables in select column fields
Comment From: saeidee
This should work fine.
db.
Select("SUM(CASE WHEN bin_start > ? THEN count ELSE 0 END) AS count_gt,SUM(CASE WHEN bin_start <= ? AND bin_end >= ? THEN count ELSE 0 END) AS count_eq,SUM(CASE WHEN bin_end < ? THEN count ELSE 0 END) AS count_lt,SUM(count) AS count_total, col1, col2").
Where("col3 = ?", your_value).
Group("col1, col2")
Comment From: vishal24tuniki
@saeidee Just like where you are passing the argument your_value for Where clause, i need the ability to pass argument to select clause as well to replace the ?
Comment From: saeidee
You can use it like this:
db.
Select("SUM(CASE WHEN bin_start > ? THEN count ELSE 0 END) AS count_gt,SUM(CASE WHEN bin_start <= ? AND bin_end >= ? THEN count ELSE 0 END) AS count_eq,SUM(CASE WHEN bin_end < ? THEN count ELSE 0 END) AS count_lt,SUM(count) AS count_total, col1, col2", bin_start_less_then, bin_start_grether_then, bin_end_date_less_then, ..).
Where("col3 = ?", your_value).
Group("col1, col2")
Comment From: vishal24tuniki
Thanks. It worked.
I was trying the below, hence was facing the issue
selectColumns := []string{
`SUM(CASE WHEN bin_start > ? THEN count ELSE 0 END) AS count_gt`,
`SUM(CASE WHEN bin_start <= ? AND bin_end >= ? THEN count ELSE 0 END) AS count_eq`,
`SUM(CASE WHEN bin_end < ? THEN count ELSE 0 END) AS count_lt`,
`SUM(count) AS count_total`,
"col1",
"col2",
}
db.
Select(selectColumns, bin_start_less_then, bin_start_grether_then, bin_end_date_less_then, ..).
Where("col3 = ?", your_value).
Group("col1, col2")