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")