我正在使用此查詢來獲取基于串列的值
詢問 :
select * from Assignment_Data_RAD where Rfid IN ( '34E59808D8400410C2048F48','3460881C004610224927D013','3C60881C00461020420FD000','3C60881C00461020420C107D','3DD00000000000103D004188','3460881C00461020420FD000' )
結果:

所需結果是基于 GS_1_BARCODE 和類別的數量計數
Category | Gs1 | Qty
shoppingbags 15/1000 | 62870164212311 | 1
shoppingbags 15/1000 | 628701642999 | 1
shoppingbags 15/1000 | 628701642123 | 2
Thermal Bags 16 | 628701642999 | 2
我還需要所有其他列以及上述資料。
我還需要在當前查詢中添加什么才能根據 Rfid 串列中的類別和 gs1 條形碼列獲取數量的總和
uj5u.com熱心網友回復:
我還需要在當前查詢中添加什么才能根據 Rfid 串列中的類別和 gs1 條形碼列獲取數量的總和
您可以使用
我還需要所有其他列以及上述資料
盡管您可以 group_concat 所有其他列,但關聯這些值可能很困難。
另一種方法是生成組的組合,作為標題行以及實際資料行,例如:-

請注意,標題行中的值(第一個突出顯示了任意值)應該(除非它們構成分組的一部分)是來自其中一個分組行的任意值。
- 它們是任意值,因為對于一個組,每列都有多個基礎值,但這些列的單個值表示
可以使用以下方法創建上述內容:-
WITH
headers AS (
SELECT 0 AS flag,*,
sum(qty) AS quantity_sum
FROM Assignment_Data_RAD
WHERE rfid IN (
'34E59808D8400410C2048F48',
'3460881C004610224927D013',
'3C60881C00461020420FD000',
'3C60881C00461020420C107D',
'3DD00000000000103D004188',
'3460881C00461020420FD000'
)
GROUP BY category,GS_1_BARCODE
),
alldata AS (
SELECT 1 AS flag,*,null
FROM Assignment_Data_RAD
WHERE rfid IN (
'34E59808D8400410C2048F48',
'3460881C004610224927D013',
'3C60881C00461020420FD000',
'3C60881C00461020420C107D',
'3DD00000000000103D004188',
'3460881C00461020420FD000'
)
)
SELECT
CASE WHEN flag THEN 'DATAROW' ELSE 'HEADER' END AS type, *
FROM headers
UNION ALL
SELECT
CASE WHEN flag THEN 'DATAROW' ELSE 'HEADER' END AS type,*
FROM alldata
ORDER BY category,gs_1_BARCODE,flag;
- 請注意,這使用 CTE(通用表運算式)(標頭和所有資料是 CTE),它們實際上是在執行期間存在的臨時表。
uj5u.com熱心網友回復:
您不能對某些內容進行分組并保留所有原始資料。這意味著沒有分組。
即使在您的示例中,您也只能擁有與這些列分組的那些列。
SELECT Category, Gs1, COUNT(*) as Qty FROM Assignment_Data_RAD GROUP BY Category, Gs1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/519844.html
標籤:安卓sqlite
