SQLのグループ化私は問題があります -- mysql フィールド と sql フィールド と sql-server フィールド と group-by フィールド 関連 問題

The grouping in the sql I'm having a problem with












0
vote

問題

日本語

MySQLからMSSQLにプロジェクトを移動しています。また、MSSQL側にグループ化されていない使用が非標準の使用をしているため、正しいデータを表示できません。提案が必要です。

<事前> <コード> SELECT Count(*) AS stok_adet, s.*, m.*,d.* FROM stok AS s CROSS JOIN mermer_cins AS m JOIN stok_durum AS d ON s.stok_durum_id = d.stok_durum_id WHERE m.mermer_cins_id = '5' AND s.blok_no = 'M6320' GROUP BY s.bundle_no, s.boy, s.yukseklik, s.hatali ORDER BY s.blok_no ASC, s.bundle_no ASC, s.stok_tarih DESC

MySQLの結果SS: https://i.ibb.co/ssknfwm/mysql.png


MSSQL側で2つの異なるメソッドを試しました。

<事前> <コード> SELECT COUNT(*) as stok_adet, s.bundle_no, s.boy, s.yukseklik, s.hatali FROM stok s CROSS JOIN mermer_cins m JOIN stok_durum d ON s.stok_durum_id = d.stok_durum_id WHERE m.mermer_cins_id = '5' AND s.blok_no = 'M6320' GROUP BY s.bundle_no, s.boy, s.yukseklik, s.hatali;

MSSQLの最初の結果SS: https://i.ibb.co/d5wxcd7/ MSSQL-First.png

<事前> <コード> SELECT s.*, m.*, (SELECT COUNT(*) FROM stok_durum d WHERE s.stok_durum_id = d.stok_durum_id ) as stok_adet FROM stok s CROSS JOIN mermer_cins m WHERE m.mermer_cins_id='5' AND s.blok_no='M6320' ORDER BY s.blok_no ASC, s.bundle_no ASC, s.stok_tarih DESC

MSSQLの第2の結果SS: https://i.ibb.co/cy2cvms/ MSSQL-Second.png

英語

I'm moving a project from MySQL to MSSQL. And since I have a non-standard use of grouping on the Mssql side, I can't bring up the correct data. I need a suggestion.

 SELECT Count(*) AS stok_adet, s.*, m.*,d.* FROM stok AS s  CROSS JOIN mermer_cins AS m  JOIN stok_durum AS d  ON s.stok_durum_id = d.stok_durum_id  WHERE  m.mermer_cins_id = '5'  AND s.blok_no = 'M6320'  GROUP BY s.bundle_no,  s.boy,  s.yukseklik,  s.hatali  ORDER BY s.blok_no ASC,  s.bundle_no ASC,  s.stok_tarih DESC  

Mysql result ss: https://i.ibb.co/ssknfwM/mysql.png


I tried two different methods on the Mssql side.

SELECT COUNT(*) as stok_adet,        s.bundle_no, s.boy, s.yukseklik, s.hatali FROM stok s CROSS JOIN      mermer_cins m JOIN      stok_durum d      ON s.stok_durum_id = d.stok_durum_id WHERE m.mermer_cins_id = '5' AND s.blok_no = 'M6320' GROUP BY s.bundle_no, s.boy, s.yukseklik, s.hatali; 

Mssql first result ss: https://i.ibb.co/d5wxcD7/mssql-first.png

SELECT s.*, m.*,        (SELECT COUNT(*)         FROM stok_durum d         WHERE s.stok_durum_id = d.stok_durum_id        ) as stok_adet FROM stok s CROSS JOIN      mermer_cins m WHERE m.mermer_cins_id='5' AND s.blok_no='M6320' ORDER BY s.blok_no ASC, s.bundle_no ASC, s.stok_tarih DESC 

Mssql second result ss: https://i.ibb.co/cY2cvMS/mssql-second.png

</div
           

回答リスト

0
 
vote
vote
ベストアンサー
 

まだ別の代替案:

<事前> <コード> SELECT sm.*, (SELECT COUNT(*) FROM stok_durum d WHERE sm.stok_durum_id = sm.stok_durum_id ) as stok_adet FROM (SELECT s.*, m.*, ROW_NUMBER() OVER (PARTITION BY s.bundle_no, s.boy, s.yukseklik, s.hatali ORDER BY (SELECT NULL) ) as seqnum FROM stok s CROSS JOIN mermer_cins m WHERE m.mermer_cins_id = '5' AND s.blok_no = 'M6320' ) sm WHERE sequm = 1 ORDER BY sm.blok_no ASC, sm.bundle_no ASC, sm.stok_tarih DESC

副問合せはウィンドウ機能を使用して任意の一致行を選択します。

 

Yet another alternative:

SELECT sm.*,        (SELECT COUNT(*)         FROM stok_durum d         WHERE sm.stok_durum_id = sm.stok_durum_id        ) as stok_adet FROM (SELECT s.*, m.*,              ROW_NUMBER() OVER (PARTITION BY s.bundle_no, s.boy, s.yukseklik, s.hatali                                  ORDER BY (SELECT NULL)                                ) as seqnum       FROM stok s CROSS JOIN             mermer_cins m        WHERE  m.mermer_cins_id = '5' AND s.blok_no = 'M6320'       ) sm WHERE sequm = 1  ORDER BY sm.blok_no ASC, sm.bundle_no ASC, sm.stok_tarih DESC  

The subquery uses window functions to choose an arbitrary matching row.

</div
 
 
       
       

関連する質問

0  Groupを構成する行のIDを取得するにはどうすれば...クエリを持つことができますか?  ( How can i get the ids of the rows that make up a group by having query ) 
私は、同じ顧客から自分自身をキャンセルするトランザクションを探す次のクエリを持っています(一部のトランザクションはマイナスです)。 <事前> <コード> SELECT c, ABS(r) magnitude, SUM(r) total, COUNT(*) nu...

1  Oracle Group ByとEmptyの結果セット  ( Oracle group by and the empty resulting set ) 
次のSQL問題があります。 シナリオ: 私は2つのテーブルを持っています:変更とChangeticket。 1:n関係があります。 1つの変更にはCEROまたはさまざまなチェンジ分けがあります。 変更なし、チェンジティックはないことを意味します。 Change...

1  C#list - by - LINQなしでグループ  ( C sharp list group by without linq ) 
私はオブジェクトを持っています: <事前> <コード> IObject { string Account, decimal Amount } アカウントでグループ化して金額を合計し、LINQなしでリストを返します。 2.0フレームワーク....

1  グループ化された2列のMySQLの数  ( Mysql count of the grouped two columns ) 
この user_logs の表: <事前> <コード> user_id | operation | table --------+-----------+----------- 1 | create | restaurant 1 ...

7  SQL Server:グループバイの最後のエントリのみ  ( Sql server only last entry in group by ) 
MSSQL2005 に次の表があります。 <事前> <コード> id | business_key | result 1 | 1 | 0 2 | 1 | 1 3 | 2 | 1 4 | 3 | 1 5 | 4 | 1 6 | 4 | 0 そして今、私は最...

85  グループバイ句の列の順序は重要ですか?  ( Does the order of columns matter in a group by clause ) 
私は2列の2つの列を持っていれば、非常に高いカーディナリティと非常に低いカーディナリティを持つもの(ユニークな値#)を持つものです。 これは例です: <事前> <コード> select dimensionName, dimensionC...

33  T-SQL Group Byを使用する方法  ( How do i use t sql group by ) 
私は(なぜ理由はわかりませんが) count のような集計関数を使用する GROUP BY 句、 <コード> sum 、<コード> avg など: <事前> <コード> SELECT count(userID), userName FROM users GRO...

2  MySQL - GET SUM()グループのグループ化されたmax()  ( Mysql get sum grouped max of group ) 
私は以下のようなテーブル構造を持っています。各行は1つのプレイゲームです、各自は毎月多くの時間を演奏することができます。 <前> ID |人..スコア|日付| --------------------------------------- 1 | 32 | 4...

0  SQL Server 2005での「インデックス作成」(表の表を維持する)  ( Indexing aka maintaining a table of aggregate data in sql server 2005 ) 
システムの性能データを維持するテーブルは、いくつかの重要な方法に対して行われ、メソッド名、その期間、トークンからなるコールであり、システムへの各要求には固有のトークンが与えられます。同じトークンを持つすべてのレコードは同じ要求です。例えば: <事前> <コード...

1  節約句の非グループ化フィールドで逃げる方法  ( How to get away with non grouping field in having clause ) 
only_full_group_by モードで実行すると、次のクエリを実行する際の節の節の節の距離 'が使用されます。クエリは、特定の緯度&AMPの15 km以内のホテルの金額を数えます。経度。このクエリを書き換える方法は、 only_full_group...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有