我有一個簡單的查詢。類似這樣的:TSQL GROUP BY部分字符串
SELECT l.list_name, COUNT(order_id)
FROM orders o JOIN lists l ON l.order_id=o.order_id
WHERE l.list_name LIKE 'orders_1%' or l.list_name LIKE 'orders_2%'
GROUP BY l.list_name
情況如下:overight存儲過程正在更新列表表,但如果有超過1000個訂單,它會在部分中排列列表。
如果我有1200條訂單,其中包含條件或列表'orders_1',那麼我的程序將創建兩個列表:'orders_1_1'和orders_1_2',第一個列表包含1,000和200個訂單。
所以,當我跑我的查詢來計算這些訂單我會得到像這樣的結果:
list_name count
orders_1 100
orders_1_more_than_100_1 1000
orders_1_more_than_100_2 200
orders_2 400
orders_3_1 1000
orders_3_2 1000
orders_3_3 420
orders_3_more_than_100_1 1000
orders_3_more_than_100_2 900
orders_3_more_than_200_1 1000
orders_3_more_than_200_2 1000
orders_3_more_than_200_3 100
orders_4 200
orders_4_more_than_300 200
我想獲得應該是這樣的結果:
list_name count
orders_1 100
orders_1_more_than_100 1200
orders_2 400
orders_3 2420
orders_3_more_than_100 1900
orders_3_more_than_200 2100
orders_4 200
orders_4_more_than_300 200
因此,它將總結所有開始相同的列表。
有關於此的任何想法? :)
這些是我在我的list_names列中的精確值:
WYS_AUT_PISMO_NR_6
WYS_AUT_PISMO_NR_5_POWYZEJ_240
WYS_AUT_PISMO_NR_5_DO_240
WYS_AUT_PISMO_NR_4_POWYZEJ_240_5
WYS_AUT_PISMO_NR_4_POWYZEJ_240_4
WYS_AUT_PISMO_NR_4_POWYZEJ_240_3
WYS_AUT_PISMO_NR_4_POWYZEJ_240_2
WYS_AUT_PISMO_NR_4_POWYZEJ_240_1
WYS_AUT_PISMO_NR_4_DO_240
WYS_AUT_PISMO_NR_3_POWYZEJ_240
WYS_AUT_PISMO_NR_3_DO_240
WYS_AUT_PISMO_NR_2_POWYZEJ_240
WYS_AUT_PISMO_NR_2_DO_240
WYS_AUT_PISMO_NR_1
我想要的是將它們分組,像這樣:
WYS_AUT_PISMO_NR_6
WYS_AUT_PISMO_NR_5_POWYZEJ_240
WYS_AUT_PISMO_NR_5_DO_240
WYS_AUT_PISMO_NR_4_POWYZEJ_240 /*fere I must group those 5 lists*/
WYS_AUT_PISMO_NR_4_DO_240
WYS_AUT_PISMO_NR_3_POWYZEJ_240
WYS_AUT_PISMO_NR_3_DO_240
WYS_AUT_PISMO_NR_2_POWYZEJ_240
WYS_AUT_PISMO_NR_2_DO_240
WYS_AUT_PISMO_NR_1
你每天都會驚喜於我。只要看你的代碼就可以顯示你的技能。你太棒了!我會立即嘗試:) – Misiu 2012-04-20 08:40:57
有一個單一的問題。如果我有2個列表,可以這樣說:orders_1_more_than_100_1 anf orders_1_more_than_100_2您的腳本工作正常,但如果我只有一個列表:orders_4,它會剪掉最後2個標記。 – Misiu 2012-04-20 08:57:42
@Misiu我一定誤解了一些東西,因爲對我來說它留下了'orders_4'。你能否發佈list_name列的確切值? – 2012-04-20 09:03:07