1

私は2つのテーブルを持っています:

table1        table2
column id     column id   column value
1             1           count_20
2             1           count_30
3             2           count_20
4             2           count_50
...           2           count_200
              3           count_30
              3           count_50
              3           count_200
              4           count_130
              ...         ...

からすべての行と対応するからtable1, column idMAX値を選択し、列のように短くするクエリを作成したいと思います。 column valuetable2DESCintvalue

したがって、出力は次のようになります。

table1.id     value
2             count_200  
3             count_200  
4             count_130  
1             count_30  
...           ...  

私は試しJOINましたが、その後、すべてので、から対応するものを取得value (count_%)します。table2idtable1

SELECT table1.id, table2.id, table2.value FROM table1
LEFT JOIN table2
ON table2.id=table1.id
WHERE table1.id<'100'
ORDER BY
CASE value
  WHEN 'count_20' THEN '20' 
END DESC,
CASE value
  WHEN 'count_30' THEN '30' 
END DESC,
CASE value
  WHEN 'count_50' THEN '50' 
END DESC,
CASE value
  WHEN 'count_130' THEN '130' 
END DESC,
CASE value
  WHEN 'count_200' THEN '200' 
END DESC;

出力:

table1.id   table2.id   value
2           2           count_200  
3           3           count_200  
4           4           count_130  
2           2           count_50  
3           3           count_50  
1           1           count_30  
3           3           count_30  
1           1           count_20  
2           2           count_20  
...         ...  

どんな助けでもいただければ幸いです。

4

2 に答える 2

1

これを試してみてください:

select t2.id, 
'count_' + cast(max(cast(replace(t2.value, 'count_', '') as int)) varchar) intValue
from table1 t1
join table2 t2 on t1.id = t2.id
group by t2.id
order by max(cast(replace(t2.value, 'count_', '') as int)) desc

これにより、次のようになります。

+ ---- + ----------- +
| ID | 値|
+ ---- + ----------- +
| 2 | count_200 |
| 3 | count_200 |
| 4 | count_130 |
| 1 | count_30 |
+ ---- + ----------- +

ここでフィドル。

于 2012-04-22T02:37:15.597 に答える
0

http://www.w3schools.com/sql/sql_distinct.asp これをチェックしてください。これにより、値が1回だけ表示されます。

于 2012-04-22T01:33:29.963 に答える