我如何 select 在我的 SQL select 语句中组合类别名称?
How can i select combine category name in my SQL select statement?
我有一个 select 语句如下:
SELECT
sales.Added_by as "Added_By",
CONCAT(HOUR(sales.Sales_Date), ':00-', HOUR(sales.Sales_Date)+2, ':00') AS Hours,
COUNT(sales.Sales_ID) AS `Sales_ID`,
sum(sales.Quantity) as "Quantity",
sum(sales.Tax_Amount) as "Tax_Amount",
sum(sales.Discount_Amount) as "Discount_Amount",
sum(sales.Total_Price) as "Total_Price",
sum(sales.Cash) as "Cash",
sum(sales.Change) as "Change",
MAX(sales_detail.Category_ID) as "Category_ID",
MAX(sales_detail.Stock_Name) as "Stock_Name",
categories.Category_Name
FROM sales
inner join sales_detail on sales.Sales_Number=sales_detail.Sales_Number
inner join categories on categories.Category_ID = sales_detail.Category_ID
GROUP BY HOUR(sales.Sales_Date) asc, sales.Added_By asc
我的问题是如何在
中添加类别名称
MAX(sales_detail.Category_ID) as "Category_ID"
列?输出应该像 1 - Category A
.
非常感谢您的帮助。
mysql 的 hackish 方法,具体使用 GROUP_CONCAT
获取每个组的逗号分隔类别列表,按类别 ID 降序排列,然后使用 SUBSTRING_INDEX
字符串函数来选择第一个值
SUBSTRING_INDEX(
GROUP_CONCAT(categories.name ORDER BY categories.Category_ID DESC)
,',',1) "Category_Name",
But how can i add in into category _id column together
CONCAT( MAX(sales_detail.Category_ID),
'-',
SUBSTRING_INDEX(
GROUP_CONCAT(categories.name ORDER BY categories.Category_ID DESC)
,',',1)
) AS "Category"
如果您的类别名称对于分组在一起的所有行始终相同,您只需将 categories.Category_Name
添加到 GROUP BY
子句,并像往常一样连接列名称:
SELECT
sales.Added_by as "Added_By",
CONCAT(HOUR(sales.Sales_Date), ':00-', HOUR(sales.Sales_Date)+2, ':00') AS Hours,
COUNT(sales.Sales_ID) AS `Sales_ID`,
sum(sales.Quantity) as "Quantity",
sum(sales.Tax_Amount) as "Tax_Amount",
sum(sales.Discount_Amount) as "Discount_Amount",
sum(sales.Total_Price) as "Total_Price",
sum(sales.Cash) as "Cash",
sum(sales.Change) as "Change",
MAX(sales_detail.Category_ID) || ' - ' || categories.Category_Name as "Category_ID",
MAX(sales_detail.Stock_Name) as "Stock_Name",
categories.Category_Name
FROM sales
inner join sales_detail on sales.Sales_Number=sales_detail.Sales_Number
inner join categories on categories.Category_ID = sales_detail.Category_ID
GROUP BY HOUR(sales.Sales_Date) asc, sales.Added_By asc, categories.Category_Name
我有一个 select 语句如下:
SELECT
sales.Added_by as "Added_By",
CONCAT(HOUR(sales.Sales_Date), ':00-', HOUR(sales.Sales_Date)+2, ':00') AS Hours,
COUNT(sales.Sales_ID) AS `Sales_ID`,
sum(sales.Quantity) as "Quantity",
sum(sales.Tax_Amount) as "Tax_Amount",
sum(sales.Discount_Amount) as "Discount_Amount",
sum(sales.Total_Price) as "Total_Price",
sum(sales.Cash) as "Cash",
sum(sales.Change) as "Change",
MAX(sales_detail.Category_ID) as "Category_ID",
MAX(sales_detail.Stock_Name) as "Stock_Name",
categories.Category_Name
FROM sales
inner join sales_detail on sales.Sales_Number=sales_detail.Sales_Number
inner join categories on categories.Category_ID = sales_detail.Category_ID
GROUP BY HOUR(sales.Sales_Date) asc, sales.Added_By asc
我的问题是如何在
中添加类别名称MAX(sales_detail.Category_ID) as "Category_ID"
列?输出应该像 1 - Category A
.
非常感谢您的帮助。
mysql 的 hackish 方法,具体使用 GROUP_CONCAT
获取每个组的逗号分隔类别列表,按类别 ID 降序排列,然后使用 SUBSTRING_INDEX
字符串函数来选择第一个值
SUBSTRING_INDEX(
GROUP_CONCAT(categories.name ORDER BY categories.Category_ID DESC)
,',',1) "Category_Name",
But how can i add in into category _id column together
CONCAT( MAX(sales_detail.Category_ID),
'-',
SUBSTRING_INDEX(
GROUP_CONCAT(categories.name ORDER BY categories.Category_ID DESC)
,',',1)
) AS "Category"
如果您的类别名称对于分组在一起的所有行始终相同,您只需将 categories.Category_Name
添加到 GROUP BY
子句,并像往常一样连接列名称:
SELECT
sales.Added_by as "Added_By",
CONCAT(HOUR(sales.Sales_Date), ':00-', HOUR(sales.Sales_Date)+2, ':00') AS Hours,
COUNT(sales.Sales_ID) AS `Sales_ID`,
sum(sales.Quantity) as "Quantity",
sum(sales.Tax_Amount) as "Tax_Amount",
sum(sales.Discount_Amount) as "Discount_Amount",
sum(sales.Total_Price) as "Total_Price",
sum(sales.Cash) as "Cash",
sum(sales.Change) as "Change",
MAX(sales_detail.Category_ID) || ' - ' || categories.Category_Name as "Category_ID",
MAX(sales_detail.Stock_Name) as "Stock_Name",
categories.Category_Name
FROM sales
inner join sales_detail on sales.Sales_Number=sales_detail.Sales_Number
inner join categories on categories.Category_ID = sales_detail.Category_ID
GROUP BY HOUR(sales.Sales_Date) asc, sales.Added_By asc, categories.Category_Name